各種排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度_第1頁(yè)
各種排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度_第2頁(yè)
各種排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度_第3頁(yè)
各種排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度_第4頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、各種排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度類(lèi)別評(píng)序方法時(shí)間復(fù)雜度空間復(fù)雜度穩(wěn)定性平均情況鍛好情況|最壞情況輔助存儲(chǔ)插入宜接插入O(tf)Q(n;fe)O(D定排序Shell排序Ofn1)(O(n)foftf)lo)衛(wèi)定選擇直接選擇Ofn3)O(n3)0()0(1)冠定排序堆排序O(nlogn)1CKnlogn)1JO(nlog?n)j0(1)不穩(wěn)定交換泡推序W)|o(n),Ofn2)0(1)穂定排序快速排序O(nlog-,n)| CXnlon)O(nz)OCnlogE不穩(wěn)定歸并排序OCnlqn)O(nlog;n)CXnlpfen)O(n)穩(wěn)定基數(shù)排序nO(d(r+n)O(d(n+rd)B(d(r+n

2、);O(rdtn)穩(wěn)定L1其中冒泡排序加個(gè)標(biāo)志,所以最好情況下是o(n)直接選擇排序:排序過(guò)程:、首先在所有數(shù)據(jù)中經(jīng)過(guò)n-1次比較選出最小的數(shù),把它與第1個(gè)數(shù)據(jù)交換,2、然后在其余的數(shù)據(jù)內(nèi)選出排序碼最小的數(shù),與第2個(gè)數(shù)據(jù)交換依次類(lèi)推,直到所有數(shù)據(jù)排完為止。在第i趟排序中選出最小關(guān)鍵字的數(shù)據(jù),需要做 n-i次比較。/冒泡排序,大的數(shù)不斷向后冒泡void buddle(vector & nu ms) TOC o 1-5 h z in t le n=nu ms.size();for(int i=0;ile n-1;i+)for(i nt j=O;jnu msj+1)swap( nu msj, nu

3、msj+1);線(xiàn)性排序算法計(jì)數(shù)排序假設(shè):有n個(gè)數(shù)的集合,而且n個(gè)數(shù)的范圍都在Ok(k = O(n)之間運(yùn)行時(shí)間: (n+k)數(shù)組加:3*1 2*2+-* 4*-* 0+10+1 1羊屮+J(k1Z*3 -4m-C*32ltnIt1E 2卻 數(shù)組G #2+6i7卡S 2.ZP 數(shù)組加a0* 0*2#4待排序數(shù)組A如圖2.1所示,需要輔助數(shù)組B(存儲(chǔ)最后排序結(jié)果),數(shù)組C(存儲(chǔ)元素的個(gè)數(shù))?;谏?述的假設(shè),數(shù)組C的大小為k,Ci表示數(shù)組A中元素i(0 = i k) 的個(gè)數(shù)(如圖2.2所示),為了保 證計(jì)數(shù)排序的穩(wěn)定性,數(shù)組 C變化為圖2.3,Ci表示小于或者等于i的個(gè)數(shù)。代碼如下:1: /*2:

4、輸入:待排序數(shù)組A,存儲(chǔ)排序后的數(shù)組B,數(shù)組A的大小,數(shù)組C的大小3:功能:計(jì)數(shù)排序4: */5: void CountingSort(int A, int B, int len, int k)6: 7:int *Cou ntArr = new in tk;8:int i;9: for (i = 0; i k; i+)10: 11: CountArri = 0;12: 13:14: for (i = 0; i len; i+)15: 16: CountArrAi+;17: 18:19: for (i = 1; i =0; i-)26: 27:BCountArrAi-1 = Ai;28:Coun

5、tArrAi-;29: 30: 9-12行和19-22行的運(yùn)行時(shí)間O (k) ,14-17行和25-29行的運(yùn)行時(shí)間為 O (n),所以總的運(yùn)行時(shí)間為 0 (2(n+k) =O (n+k)?;鶖?shù)排序基數(shù)排序:將所有待比較數(shù)值 (正整數(shù))統(tǒng)一為同樣的數(shù)位長(zhǎng)度,數(shù)位較短的數(shù)前面補(bǔ)零。然后,從最 低位開(kāi)始,依次進(jìn)行一次排序。這樣從最低位排序一直到最高位排序完成以后,數(shù)列就變成一個(gè)有序序列?;鶖?shù)排序分為兩種LSD和MSDLSD(Least significant digital):最低有效位優(yōu)先,即從右向左開(kāi)始排序。MSD(Most significant digital) :最高有效位優(yōu)先,即從左往

6、右開(kāi)始排序。以下是LSD方式的基數(shù)排序的偽代碼1: RadixSort(A,d)2: for i - 1 to d3:用穩(wěn)定的排序算法排列數(shù)組A中元素的第i位1261111052-252252f 123T 123-610 252252051352611如圖3:先牌個(gè)位,然后十位,最后百位。為數(shù)組的某一位排序的時(shí)候一定需要穩(wěn)定的算法。運(yùn)行時(shí)間為 (d(n+k)。在基數(shù)排序中排列數(shù)組各位的算法是計(jì)數(shù)排序所以運(yùn)行時(shí)間為 (n+k),又d是數(shù)組中數(shù)的最大位數(shù)。桶排序桶排序:將數(shù)組分到有限個(gè)桶子內(nèi),然后再對(duì)桶子里面的序列進(jìn)行排序,運(yùn)行時(shí)間(n)。桶排序基于一個(gè)假設(shè):輸入的數(shù)據(jù)由隨機(jī)過(guò)程構(gòu)成,否則在最壞情

7、況下都分配到一個(gè)桶子里面,如果又不滿(mǎn)足計(jì) 數(shù)排序的假設(shè)要求,那么只能使用基于比較的排序算法進(jìn)行排序,運(yùn)行時(shí)間就退化到Q (nlogn)。排序算法穩(wěn)定性排序算法穩(wěn)定性:假設(shè)待排序序列中有兩個(gè)元素相等,而且在排序前和排序后兩個(gè)相等的元素的相對(duì) 位置不變,即有a = b,排序前a在b前面,那么排序后,a還是要在b前面。排序算法的穩(wěn)定性是要 看具體的算法實(shí)現(xiàn),比如一般情況下,直接選擇排序,快速排序,希爾排序,堆排序都不是穩(wěn)定排序 算法,基數(shù)排序,計(jì)數(shù)排序,歸并排序,插入排序,冒泡排序都是穩(wěn)定排序算法。快速排序:A = 2,2,1,排序后A = 1,2, 2。希爾排序:A = 1,2, 5, 4,4,7,排序后(k

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論