欢迎来到天天文库
浏览记录
ID:15653841
大小:207.50 KB
页数:61页
时间:2018-08-04
《java排序算法的实现》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1.冒泡排序 已知一组无序数据a[1]、a[2]、……a[n],需将其按升序排列。首先比较a[1]与a[2]的值,若a[1]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再比较a[3]与a[4],以此类推,最后比较a[n-1]与a[n]的值。这样处理一轮后,a[n]的值一定是这组数据中最大的。再对a[1]~a[n-1]以相同方法处理一轮,则a[n-1]的值一定是a[1]~a[n-1]中最大的。再对a[1]~a[n-2]以相同方法处理一轮,以此类推。共
2、处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。 优点:稳定,比较次数已知; 缺点:慢,每次只能移动相邻两个数据,移动数据的次数多。 初始关键字[4938659776132749] 第一趟排序后[38496576132749]97 第二趟排序后[384965132749]7697 第三趟排序后[3849132749]657697 第四趟排序后[38132749]49657697 第五趟排序后[381327]4949657697 第六趟排序后[1327]384949657697 第七趟排序后[13]2738
3、4949657697 最后排序结果1327384949767697 2.选择排序 ①初始状态:无序区为R[1..n],有序区为空。②第1趟排序在无序区R[1..n]中选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。……③第i趟排序第i趟排序开始时,当前有序区和无序区分别为R[1..i-1]和R[i..n](1≤i≤n-1)。该趟排序从当前无序区中选出关键字最小的记录R[k],将它与无序区的第1个记录R交换
4、,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区.这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。 优点:稳定,比较次数与冒泡排序一样; 缺点:相对之下还是慢。 初始关键字[4938659776132749]第一趟排序后13[38659776492749]第二趟排序后1327[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[49976576]第五趟排序后1327384949[977676
5、]第六趟排序后132738494976[7697]第七趟排序后13273849497676[97]最后排序结果1327384949767697 12232378986820122323782068980123456#include usingnamespacestd; voidmain() {inti,j,k,t;intR[8]={49,38,65,97,76,13,27,49};for(i=0;i<7;i++){k=i;for(j=i+1;j<8;j++)if(R[j]6、!=i){t=R[j];R[j]=R[k];R[k]=t;}} for(i=0;i<8;i++)cout<7、38659776132759] a b[1]b[2] b[3] b[4]b[5] b[6] b[7]b[8] 1—–49 49> 38 65 97 76 13 27 59 38 49 49 ………. 38 38 49 ………. 2—–38 38 49<65 97 76 13 27 59 3—–38 38 49 65<97 76 13 27 59 4—-38 38 49 65 97> 76 13 27 59 76 38 49 65 97 98、7…….. 76 38 49 65 76 97…….. 以此类推 voidinsertSort(Type*arr,longlen) {longi=0,j=0;for(i=1;i0){
6、!=i){t=R[j];R[j]=R[k];R[k]=t;}} for(i=0;i<8;i++)cout<7、38659776132759] a b[1]b[2] b[3] b[4]b[5] b[6] b[7]b[8] 1—–49 49> 38 65 97 76 13 27 59 38 49 49 ………. 38 38 49 ………. 2—–38 38 49<65 97 76 13 27 59 3—–38 38 49 65<97 76 13 27 59 4—-38 38 49 65 97> 76 13 27 59 76 38 49 65 97 98、7…….. 76 38 49 65 76 97…….. 以此类推 voidinsertSort(Type*arr,longlen) {longi=0,j=0;for(i=1;i0){
7、38659776132759] a b[1]b[2] b[3] b[4]b[5] b[6] b[7]b[8] 1—–49 49> 38 65 97 76 13 27 59 38 49 49 ………. 38 38 49 ………. 2—–38 38 49<65 97 76 13 27 59 3—–38 38 49 65<97 76 13 27 59 4—-38 38 49 65 97> 76 13 27 59 76 38 49 65 97 9
8、7…….. 76 38 49 65 76 97…….. 以此类推 voidinsertSort(Type*arr,longlen) {longi=0,j=0;for(i=1;i0){
此文档下载收益归作者所有