c語言中三種常見排序算法分析

c語言中三種常見排序算法分析

ID:6578714

大?。?3.50 KB

頁數(shù):6頁

時間:2018-01-18

c語言中三種常見排序算法分析_第1頁
c語言中三種常見排序算法分析_第2頁
c語言中三種常見排序算法分析_第3頁
c語言中三種常見排序算法分析_第4頁
c語言中三種常見排序算法分析_第5頁
資源描述:

《c語言中三種常見排序算法分析》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。

1、C語言中三種常見排序算法分析一、冒泡法(起泡法)算法要求:用起泡法對10個整數(shù)按升序排序。算法分析:如果有n個數(shù),則要進(jìn)行n-1趟比較。在第1趟比較中要進(jìn)行n-1次相鄰元素的兩兩比較,在第j趟比較中要進(jìn)行n-j次兩兩比較。比較的順序從前往后,經(jīng)過一趟比較后,將最值沉底(換到最后一個元素位置),最大值沉底為升序,最小值沉底為降序。算法源代碼:#includemain(){inta[10],i,j,t;printf("Pleaseinput10numbers:");/*輸入源數(shù)據(jù)*/for(i

2、=0;i<10;i++)scanf("%d",&a[i]);/*排序*/for(j=0;j<9;j++)/*外循環(huán)控制排序趟數(shù),n個數(shù)排n-1趟*/for(i=0;i<9-j;i++)/*內(nèi)循環(huán)每趟比較的次數(shù),第j趟比較n-j次*/if(a[i]>a[i+1])/*相鄰元素比較,逆序則交換*/{t=a[i];a[i]=a[i+1];a[i+1]=t;}/*輸出排序結(jié)果*/printf("Thesortednumbers:");for(i=0;i<10;i++)printf("%d",a[i]);printf

3、("");}算法特點(diǎn):相鄰元素兩兩比較,每趟將最值沉底即可確定一個數(shù)在結(jié)果的位置,確定元素位置的順序是從后往前,其余元素可能作相對位置的調(diào)整??梢赃M(jìn)行升序或降序排序。算法分析:定義n-1次循環(huán),每個數(shù)字比較n-j次,比較前一個數(shù)和后一個數(shù)的大小。然后交換順序。二、選擇法算法要求:用選擇法對10個整數(shù)按降序排序。算法分析:每趟選出一個最值和無序序列的第一個數(shù)交換,n個數(shù)共選n-1趟。第i趟假設(shè)i為最值下標(biāo),然后將最值和i+1至最后一個數(shù)比較,找出最值的下標(biāo),若最值下標(biāo)不為初設(shè)值,則將最值元素和下標(biāo)為i的元

4、素交換。算法源代碼:#includemain(){inta[10],i,j,k,t,n=10;printf("Pleaseinput10numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i

5、;/*則將其下標(biāo)記在k中*/if(k!=i)/*若k不為最初的i值,說明在其后找到比其更大的數(shù)*/{t=a[k];a[k]=a[i];a[i]=t;}/*則交換最值和當(dāng)前序列的第一個數(shù)*/}printf("Thesortednumbers:");for(i=0;i<10;i++)printf("%d",a[i]);printf("");}算法特點(diǎn):每趟是選出一個最值確定其在結(jié)果序列中的位置,確定元素的位置是從前往后,而每趟最多進(jìn)行一次交換,其余元素的相對位置不變??蛇M(jìn)行降序排序或升序排序。算法分析:定義

6、外部n-1次循環(huán),假設(shè)第一個為最值,放在參數(shù)中,在從下一個數(shù)以后找最值若后面有比前面假設(shè)的最值更大的就放在k中,然后在對k進(jìn)行分析。若k部位最初的i值。也就是假設(shè)的i不是最值,那么就交換最值和當(dāng)前序列的第一個數(shù)三、插入法算法要求:用插入排序法對10個整數(shù)進(jìn)行降序排序。算法分析:將序列分為有序序列和無序列,依次從無序序列中取出元素值插入到有序序列的合適位置。初始是有序序列中只有第一個數(shù),其余n-1個數(shù)組成無序序列,則n個數(shù)需進(jìn)n-1次插入。尋找在有序序列中插入位置可以從有序序列的最后一個數(shù)往前找,在未找到插入

7、點(diǎn)之前可以同時向后移動元素,為插入元素準(zhǔn)備空間。算法源代碼:#includemain(){inta[10],i,j,t;printf("Pleaseinput10numbers:");for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=1;i<10;i++)/*外循環(huán)控制趟數(shù),n個數(shù)從第2個數(shù)開始到最后共進(jìn)行n-1次插入*/{t=a[i];/*將待插入數(shù)暫存于變量t中*/for(j=i-1;j>=0&&t>a[j];j--)/*在有序序列(下標(biāo)0~i-1)中尋

8、找插入位置*/a[j+1]=a[j];/*若未找到插入位置,則當(dāng)前元素后移一個位置*/a[j+1]=t;/*找到插入位置,完成插入*/}printf("Thesortednumbers:");for(i=0;i<10;i++)printf("%d",a[i]);printf("");}四、兩路歸并main(){inta[3]={5,9,10};intb[5]={12,24,26,37,48};intc[10]

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。