欢迎来到天天文库
浏览记录
ID:14305983
大小:51.62 KB
页数:15页
时间:2018-07-27
《排序算法总结-java篇》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、排序算法总结-Java篇1.插入排序基本操作:将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据。时间复杂度:算法适用于少量数据的排序,时间复杂度为O(n^2)。稳定性:稳定。实现:1.首先新建一个空列表,用于保存已排序的有序数列(我们称之为"有序列表")。2.从原数列中取出一个数,将其插入"有序列表"中,使其仍旧保持有序状态。3.重复2号步骤,直至原数列为空。插入排序的工作原理与打牌时整理手中的牌的做法类似,开始摸牌时,我们的左手是空的,接着一次从桌上摸起一张牌,并将它插入到左手的正确位置。
2、为了找到这张牌的正确位置,要将它与手中已有的牌从右到左进行比较,无论什么时候手中的牌都是排序好的。Java程序代码://插入排序packageSort;publicclassInsertSort{publicstaticvoidmain(String[]args){intt,temp,i,j;t=args.length;//输入数据的元素个数intnum[]=newint[t];//创建数组System.out.println("排序前:");for(i=0;i3、ger.parseInt(args[i]);System.out.print(num[i]+"");}System.out.println("");//执行插入排序for(i=1;i0;j--){if(num[j]4、int(num[a]+"");}System.out.println("");}//输出排序结果System.out.println("排序后:");for(i=0;i5、素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数均达到最小值:,。所以,冒泡排序最好的时间复杂度为 。 若初始文件是反序的,需要进行趟6、排序。每趟排序要进行 次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为 。综上,因此冒泡排序总的平均时间复杂度为 。稳定性:稳定。Java程序代码://冒泡排序packageSort;publicclassBubbleSort{publicstaticvoidmain(String[]args){intt=args.length;//输入数据的元素个数intscore[]=newint[t];//排序前System.o7、ut.println("排序前:");for(inti=0;i8、(j的范围很关键,这个范围是在逐步缩小的)if(score[j]
3、ger.parseInt(args[i]);System.out.print(num[i]+"");}System.out.println("");//执行插入排序for(i=1;i0;j--){if(num[j]4、int(num[a]+"");}System.out.println("");}//输出排序结果System.out.println("排序后:");for(i=0;i5、素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数均达到最小值:,。所以,冒泡排序最好的时间复杂度为 。 若初始文件是反序的,需要进行趟6、排序。每趟排序要进行 次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为 。综上,因此冒泡排序总的平均时间复杂度为 。稳定性:稳定。Java程序代码://冒泡排序packageSort;publicclassBubbleSort{publicstaticvoidmain(String[]args){intt=args.length;//输入数据的元素个数intscore[]=newint[t];//排序前System.o7、ut.println("排序前:");for(inti=0;i8、(j的范围很关键,这个范围是在逐步缩小的)if(score[j]
4、int(num[a]+"");}System.out.println("");}//输出排序结果System.out.println("排序后:");for(i=0;i5、素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数均达到最小值:,。所以,冒泡排序最好的时间复杂度为 。 若初始文件是反序的,需要进行趟6、排序。每趟排序要进行 次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为 。综上,因此冒泡排序总的平均时间复杂度为 。稳定性:稳定。Java程序代码://冒泡排序packageSort;publicclassBubbleSort{publicstaticvoidmain(String[]args){intt=args.length;//输入数据的元素个数intscore[]=newint[t];//排序前System.o7、ut.println("排序前:");for(inti=0;i8、(j的范围很关键,这个范围是在逐步缩小的)if(score[j]
5、素会经由交换慢慢“浮”到数列的顶端。冒泡排序算法的运作如下:1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。3.针对所有的元素重复以上的步骤,除了最后一个。4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。时间复杂度若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数 和记录移动次数均达到最小值:,。所以,冒泡排序最好的时间复杂度为 。 若初始文件是反序的,需要进行趟
6、排序。每趟排序要进行 次关键字的比较(1≤i≤n-1),且每次比较都必须移动记录三次来达到交换记录位置。在这种情况下,比较和移动次数均达到最大值:冒泡排序的最坏时间复杂度为 。综上,因此冒泡排序总的平均时间复杂度为 。稳定性:稳定。Java程序代码://冒泡排序packageSort;publicclassBubbleSort{publicstaticvoidmain(String[]args){intt=args.length;//输入数据的元素个数intscore[]=newint[t];//排序前System.o
7、ut.println("排序前:");for(inti=0;i8、(j的范围很关键,这个范围是在逐步缩小的)if(score[j]
8、(j的范围很关键,这个范围是在逐步缩小的)if(score[j]
此文档下载收益归作者所有