欢迎来到天天文库
浏览记录
ID:26426620
大小:106.50 KB
页数:43页
时间:2018-11-26
《10种常见的排序算法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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]以相同方法处理一轮,以此类推。共处理n-1轮后a[1]、a[2]、……a[n]就以升序排列了。 优
2、点:稳定,比较次数已知;缺点:慢,每次只能移动相邻两个数据,移动数据的次数多。 初始关键字[4938659776132749]第一趟排序后[38496576132749]97第二趟排序后[384965132749]7697第三趟排序后[3849132749]657697第四趟排序后[38132749]49657697第五趟排序后[381327]4949657697第六趟排序后[1327]384949657697第七趟排序后[13]27384949657697最后排序结果1327384949767697 #includeusingnamespacestd;void
3、main() { inti,j,k; inta[8]={49,38,65,97,76,13,27,49}; for(i=7;i>=0;i--) { for(j=0;ja[j+1]) { k=a[j]; a[j]=a[j+1]; a[j+1]=k; }
4、 } } for(i=0;i<8;i++) cout<5、[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区.这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。 优点:稳定,比较次数与冒泡排序一样;缺点:相对之下还是慢。 初始关键字[4938659776132749]第一趟排序后13[38659776492749]第二趟排序后1327[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[49976576]第五趟排序后1327384949[979776]第六趟排序后132738494976[7697]第七趟排序后132736、849497676[97]最后排序结果1327384949767697 #includeusingnamespacestd;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]7、 cout<
5、[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区.这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。 优点:稳定,比较次数与冒泡排序一样;缺点:相对之下还是慢。 初始关键字[4938659776132749]第一趟排序后13[38659776492749]第二趟排序后1327[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[49976576]第五趟排序后1327384949[979776]第六趟排序后132738494976[7697]第七趟排序后13273
6、849497676[97]最后排序结果1327384949767697 #includeusingnamespacestd;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]7、 cout<
7、 cout<
此文档下载收益归作者所有