C语言9种常用排序法讲解

上传人:新** 文档编号:464486601 上传时间:2022-09-29 格式:DOCX 页数:25 大小:47.56KB
返回 下载 相关 举报
C语言9种常用排序法讲解_第1页
第1页 / 共25页
C语言9种常用排序法讲解_第2页
第2页 / 共25页
C语言9种常用排序法讲解_第3页
第3页 / 共25页
C语言9种常用排序法讲解_第4页
第4页 / 共25页
C语言9种常用排序法讲解_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《C语言9种常用排序法讲解》由会员分享,可在线阅读,更多相关《C语言9种常用排序法讲解(25页珍藏版)》请在金锄头文库上搜索。

1、c ffiA 9sxaasaml.lnDiil璽耶2倂翌羽3諭番4番番5書番6IS盖7ltf番8母Is刘I5IW肅盛辖羽9專番浊 nc-udeASsiohv5r main。宀5r i、j、n、a100L rempj wh=e(scanf(=%d=n) 一 H EOF) 宀for(HojAa+)scanf(=%d=ais-duJE H 曰e 苕e丄I+ne 77+ne n duJEmeHb-KH+neH+ne 川曰 e 蝕4二 (口+吕人好)七 屈呱a一 塹(+?luvoHO&(+TU.YO上)04ouraUHU 一AUpplsvCDpnpu宀oebo宀(urfcuud二二5p%=)上 u_de

2、LE (+XU.YO上)045r i、j、n、a100L L remp wh=e(scanf(=%d=n) 一 H EOF) 宀for(HojAa+)scanf(=%d=aisfor(HojAn?+) n1宀r Hi;rorcjl!.+l;An;j+)-洒i洱旦+l2a?l召倂馴、毎磐山旦二型 宀.svremp H am 岂H刍; asH rempj for(HojAa+) Pr1nrr(=%d pwn=); return 03.快速排序1.假设数组为 an;2.第一次排序过程如下:取x = 0( a0为中车由);i=0 (第一个元素下标),j=n-1(最后一个元素下标);重复下面过程:(直到

3、 i=j)从aj起,向前找小于ax的元素,同时j-,找到后,aj与ax交换,x=j;从ai起,向后找大于ax的元素,同时i+,找到后,ai与ax交换,x=i;3.注意快排函数是迭代函数,必须要有结束条件 (因为忽略结束条件,调试了很久)4再对alowax-l、ax+lahigh分别调用快排函数#includevoid quicksort(int a,int low,int high);int main()int i, n, a100;while(scanf(%d,&n)!=EOF)for(i=0;i!8x吐!G)oj匕動欧伞阳昭也胸=ixe=r|eQjojfdiU941=x 炯1 = 7mo|

4、=!)ui 阜糜逊第士團日un”均滲車芳胡糞些/Mgai (h6ii=p!nb piOA fO un】B“ujiu!d爼!既P%“)J】U!d (+ifuifo=!)JOj :(l:-uoe)losp!nb !eg“P% 仙 UQSai = aj;aj = temp;x = i;elsebreak;/跳出本次 while 循环quicksort(a,low,x-1);quicksort(a,x+1,high);4. 插入排序法#includevoid show(int a,int n) /输出数组 int i;for(i=0;in;i+)printf(%d ,ai); printf(n);vo

5、id insertsort(int a,int n);int main()(u 4U_)4OS4USU 一 p_ oebo宀-(urD)MOUS-(urutospCDsu- 二二 e-p%=)4uss(+XU.YO上)04(LL.0 山上(u 一&讣殳?龙)。4二 二 euduJE) osoonuQUCO番Kw、蛊養二7THE一匸+壮、vHgK殴二(丄OH 空曰 e V 三5。4三 eV、/ (+XU.YX上)04-dujor一 4U 一aj=temp;5. shell 排序法#includevoid show(int a,int n) /输出数组 int i;for(i=0;in;i+)pr

6、intf(%d ,ai); printf(n);void shellsort(int a,int n);int main()int i, n, a100;while(scanf(%d,&n)!=EOF)for(i=0;i|-dluE、-、r r 4U-(u 4U口 e 4umos=s po宀oebo宀-(urD)MOUS_(ua3)4os=2)执行如下几步:(3个及以上)mid = (0+n)/2;mergesort(a,low,mid-1);mergesort(a,mid,high);进行本轮二路归并;bsort(int low,int mid,int high);i=low,j=mid;w

7、hile(imid&j=ahigh) 交换 alow,ahigh;#includeint other100;void exchange(int *a,int *b)int t=*a;*a=*b;*b=t;void show(int a,int n) /输出数组int i;for(i=0;in;i+)printf(%d ,ai);printf(n);void mergesort(int a,int low,int high);int main()int i, n, a100;while(scanf(%d,&n)!=EOF)for(i=0;i2)/含 3 个以上int mid = (high+lo

8、w)/2;mergesort(a,low,mid);mergesort(a,mid+1,high);int i=low, j=mid+1, k=low;while(i=mid&j=high)if(aiaj)otherk+=aj+;while(i=mid)otherk+=ai+;while(j=high)otherk+=aj+;for(i=low;iahigh)exchange(a+low,a+high);fq* 弓一 一 (q* lure* 4uBuelpxe p_ (urfcuud 二二5p%=)上 u_d(+XU.YO上)04= 一翱软田霹二(u 口 e 4U 一) MOE po AUpplsvCDpnpu r ffiw_zM 宀&ffl爭霹、删)0耀6z一s 口 e 4umosde J津口 e 遇、()4snpede 旺理邀6(eez一s 4U口 e -u 一) dep=nq J津 sts二 2空耀6金禺一s 4U:Sluse 4umsnpedeeln(W)-K叢量 SH8ftt二void heapadjust(int a,int i,int sizea)int maxi=i;int l=2*i+1;int r=2*i+2;if(iv(sizea/2)ai为叶结点,则不需要调整if(lv=(

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 建筑资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号