[Java的集中基本常用算法.docx

  1. 1、本文档共31页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[Java的集中基本常用算法

常用算法冒泡排序算法冒泡排序是排序算法的一种,思路清晰,代码简洁,常被用在大学生计算机课程中。“冒泡”这个名字的由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。这里以从小到大排序为例进行讲解基本思想及举例说明冒泡排序的基本思想就是不断比较相邻的两个数,让较大的元素不断地往后移。经过一轮比较,就选出最大的数;经过第2轮比较,就选出次大的数,以此类推。下面以对 3 2 4 1 进行冒泡排序说明。第一轮排序过程3 2 4 1 (最初)2 3 4 2 (比较3和2,交换)2 3 4 1 (比较3和4,不交换)2 3 1 4 (比较4和1,交换)第一轮结束,最大的数4已经在最后面,因此第二轮排序只需要对前面三个数进行再比较。第二轮排序过程2 3 1 4 (第一轮排序结果)2 3 1 4 (比较2和3,不交换)2 1 3 4 (比较3和1,交换第二轮结束,第二大的数已经排在倒数第二个位置,所以第三轮只需要比较前两个元素。第三轮排序过程2 1 3 4 (第二轮排序结果)1 2 3 4 (比较2和1,交换)至此,排序结束。算法总结及实现对于具有N个元素的数组R[n],进行最多N-1轮比较;第一轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-1], R[N]) ; 最大的元素会被移动到R[N]上。第二轮,逐个比较(R[1], R[2]), (R[2], R[3]), (R[3], R[4]), ……. (R[N-2], R[N-1]);第二大元素会被移动到R[N-1]上。。。。。以此类推,直到整个数组从小到大排序。下面给出了冒泡排序的一般实现和优化实现。一般实现是教科书里常见的实现方法,无论数组是否排序好了,都会进行N-1轮比较;而优化实现,在数组已经排序好的情况下,会提前退出比较,减小了算法的时间复杂度。/* * Created on: 2015年4月25日 * Author: xia */#includestdio.h#includestdlib.h#define N 8voidbubble_sort(int a[], int n);//一般实现Voidbubble_sort(int a[], int n) //n为数组a的元素个数{//一定进行N-1轮比较for (inti = 0; i n - 1; i++) {//每一轮比较前n-1-i个,即已排序好的最后i个不用比较for (int j = 0; j n - 1 - i; j++) {if (a[j] a[j + 1]) {int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}}}//优化实现voidbubble_sort_better(int a[], int n) //n为数组a的元素个数{//最多进行N-1轮比较for (inti = 0; i n - 1; i++) {intisSorted = 1;//每一轮比较前n-1-i个,即已排序好的最后i个不用比较for (int j = 0; j n - 1 - i; j++) {if (a[j] a[j + 1]) {isSorted = 0;int temp = a[j];a[j] = a[j + 1];a[j + 1] = temp;}}if (isSorted)break; //如果没有发生交换,说明数组已经排序好了}}intmain() {intnum[N] = { 89, 38, 11, 78, 96, 44, 19, 25 };bubble_sort(num, N); //或者使用bubble_sort_better(num, N);for (inti = 0; i N; i++)printf(%d , num[i]);printf(\n);system(pause);return 0;}选择排序算法选择排序是排序算法的一种,这里以从小到大排序为例进行讲解。基本思想及举例说明选择排序(从小到大)的基本思想是,首先,选出最小的数,放在第一个位置;然后,选出第二小的数,放在第二个位置;以此类推,直到所有的数从小到大排序。在实现上,我们通常是先确定第i小的数所在的位置,然后,将其与第i个数进行交换。下面,以对 3 2 4 1 进行选择排序说明排序过程,使用min_index记录当前最小的数所在的位置。第1轮排序过程(寻找第1小的数所在的位置)3 2 4 1(最初,min_index=1)3 2 4 1(3 2,所以min_index=2)3 2 4 1(2

文档评论(0)

1974wangpeng + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档