资源描述:
《c的数据结构八种排序算法的 代码及分析》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、二、选择排序①初始状态:无序区为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[i]交换,使R[1..i]和R[i+1..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区.
2、这样,n个记录的文件的直接选择排序可经过n-1趟直接选择排序得到有序结果。优点:稳定,比较次数与冒泡排序一样;缺点:相对之下还是慢。初始关键字[4938659776132749]第一趟排序后13[38659776492749]第二趟排序后1327[659776493849]第三趟排序后132738[9776496549]第四趟排序后13273849[49976576]第五趟排序后1327384949[979776]第六趟排序后132738494976[7697]第七趟排序后13273849497676[97]最后排序结果1327384949767697#includ
3、eusingnamespacestd;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]4、换两者的值,否则不变。再比较a[2]与a[3]的值,若a[2]大于a[3]则交换两者的值,否则不变。再#include#includeintmain(void){intdata[10]={73,22,93,43,55,14,28,65,39,81};inttemp[10][10]=;intorder[10]=;inti,j,k,n,lsd;k=0;n=1;printf("/n排序前:");for(i=0;i<10;i++)printf("%d",data);putchar('/n');while(n<=10){for(i=0;i
5、<10;i++){lsd=((data/n)%10);temp[lsd][order[lsd]]=data;order[lsd]++;}printf("/n重新排列:");for(i=0;i<10;i++){if(order!=0)for(j=0;j6、io.h>#includeintmain(void){intdata[10]={73,22,93,43,55,14,28,65,39,81};inttemp[10][10]=;intorder[10]=;inti,j,k,n,lsd;k=0;n=1;printf("/n排序前:");for(i=0;i<10;i++)printf("%d",data);putchar('/n');while(n<=10){for(i=0;i<10;i++){lsd=((data/n)%10);temp[lsd][order[lsd]]=data;order[lsd
7、]++;}printf("/n重新排列:");for(i=0;i<10;i++){if(order!=0)for(j=0;j#includeintmain(void){intdata[10]={73,22,93,43