C的数据结构八种排序算法的代码及分析.doc二、选择排序初始状态:无序区为R[1..n],有序区为空。第1趟排序在无序区R[1..n]屮选出关键字最小的记录R[k],将它与无序区的第1个记录R[1]交换,使R[1..1]和R[2..n]分别变为记录个数增加1个的新有序区和记录个数减少1个的新无序区。第i趟排序第i趟排序开始时,当前有序区和无序区分别为R[1・・「]和R[i・.n](1WiWn・1)。该趟排序从当前无序区屮选出关键字最小的记录R[k],将它与无序区的第1个记录R[i]交换,使R[1..i]和R[i+1..n],n个记录的文件的育接选择排序可经过n-1趟直接选择排序得到有序结果。优点:稳定,比较次数与冒泡排序一样;缺点:相对Z下还是慢。13L38659776492749]1327[659776493849]132738[9776496549]13273849[49976576]1327384949[979776]132738494976[7697]13273849497676[97]1327384949767697初始关键字[4938659776132749]第一趟排序后第二趟排序示第三趟排序后第四趟排序后第五趟排序后第六趟排序后第七趟排序后最后排序结果#inelude<iostream>usingnamespacestd;voidmain(){intij,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]vR[町)k=j;if(k!=i){t=R[i];R[i]=R[k];R[k]=t;}}for(i=0;i<8;i++)cout«R[i]«endl;一、冒泡排序(小者上扬原则)已知一组无序数据肛1]、a⑵、……a[n],需将其按升序排列。首先比较a⑴与肛2]的值,若a[l]大于a[2]则交换两者的值,否则不变。再比较a[2]与a[3]的值,若a⑵大于a[3]则交换两者的值,否则不变。rj#include<>include<>intmain(void){intdata[10]={73,22,93,43,55,14,28,65,39,81};inttemp[10][10]=;intorder[10]=;inti,j,k,n,Isd;k=0;printfCVn排序前:”);for(i=0;i<10;i++)printf(”%d”,data;;putchar(7n');while(n<=10){for(i=0;iv10;i++){Isd=((data/n)%10);temp[lsd][order[lsd]]=data;order[lsd]++;}printf(7n垂新排列:“);for(i=0;i<10;i++){if(order/=0)for(j=0;j<order;j++){data[k]=temp[j];printf("%d:data[k]);k++;}order=0;}n*=10;k=0;}putchar(7n');printf(7n排序后:“);for(i=0;i<10;i++)printf(”%d:data);return0;}#include<>#include<>intmain(void){HdaM-lo一丄73-22」9043-55」14-2065-39・8壬n二empuo=lol上niorder匸0】上n二LKp_saI-printfg^s..for(i=0二A10二++)pr5-tf(=%d・「daahpushar(y3-whi一e(nAN10)(for(jH0二人10二++二-sdn((das-、n)%70J;-emp〔-sd=order一-sd=nda®ordgsd一+±gmf(・7nsss..fo『(一n0二AW二++二if(orderII0)or(jH0二Aorder-j++)fdasrsn一empu=prin一f(=%d八dagk三k++「orderno;nrs-kuo」(・7n卷書Hfor(一No二A10二++)printf(=%d八data).recm0;)#inc-#inc-udecss=b・hvinimain(void){intdaMlo一丄73』22-93-43-55-14-28-65“39-8壬in二emp=0=10】上iniordeao】n-in二j"k"p_sak=pEhfun尊引孕三for(i=0二人10二++)printf(=%d="das-hpuichar(73-whi一e(nAu10二WHO二A10二++二-sdn
C的数据结构八种排序算法的代码及分析 来自淘豆网www.taodocs.com转载请标明出处.