CHAP10排序lhj_第1頁
CHAP10排序lhj_第2頁
CHAP10排序lhj_第3頁
CHAP10排序lhj_第4頁
CHAP10排序lhj_第5頁
已閱讀5頁,還剩102頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1210.1 概述概述10.2 插入類排序插入類排序10.3 交換類排序交換類排序10.4 選擇排序選擇排序10.5 歸并排序歸并排序10.6 基數(shù)排序基數(shù)排序10.7 各種排序方法的綜合比較各種排序方法的綜合比較310.1 概概 述述10.1.1 排序的定義排序的定義10.1.3 排序的分類排序的分類 10.1.4 基本操作基本操作10.1.2 比較的標(biāo)準(zhǔn)比較的標(biāo)準(zhǔn) 10.1.5 內(nèi)部排序的方法內(nèi)部排序的方法 410.1.1 排序的概念排序的概念1.排序排序(sorting)是計(jì)算機(jī)內(nèi)經(jīng)常進(jìn)行的一種操作,是計(jì)算機(jī)內(nèi)經(jīng)常進(jìn)行的一種操作,其目的是將一組其目的是將一組“無序無序”的記錄序列調(diào)的記錄

2、序列調(diào)整為整為“有序有序”的記錄序列。的記錄序列。例如:例如:成績表;獎(jiǎng)學(xué)金評(píng)定綜合分。成績表;獎(jiǎng)學(xué)金評(píng)定綜合分。52.數(shù)據(jù)表數(shù)據(jù)表 (datalist): 它是待排序數(shù)據(jù)它是待排序數(shù)據(jù)對(duì)象的有限集合。對(duì)象的有限集合。3.主關(guān)鍵字主關(guān)鍵字(key): 數(shù)據(jù)對(duì)象有多個(gè)屬性數(shù)據(jù)對(duì)象有多個(gè)屬性域域, 即多個(gè)數(shù)據(jù)成員組成即多個(gè)數(shù)據(jù)成員組成, 其中有一個(gè)其中有一個(gè)屬性域可用來區(qū)分對(duì)象屬性域可用來區(qū)分對(duì)象, 作為排序作為排序依據(jù),稱為依據(jù),稱為關(guān)鍵字關(guān)鍵字。也稱為。也稱為排序碼排序碼。6 一般情況下,一般情況下,假設(shè)含假設(shè)含n個(gè)記錄的序列為個(gè)記錄的序列為 R1, R2, , Rn 其相應(yīng)的其相應(yīng)的關(guān)鍵字序

3、列關(guān)鍵字序列為為 K1, K2, ,Kn 這些關(guān)鍵字相互之間可以進(jìn)行比較,即在這些關(guān)鍵字相互之間可以進(jìn)行比較,即在它們之間存在著這樣一個(gè)關(guān)系它們之間存在著這樣一個(gè)關(guān)系 Kp1Kp2Kpn按此固有關(guān)系將上式記錄序列重新排列為按此固有關(guān)系將上式記錄序列重新排列為 Rp1, Rp2, ,Rpn 的操作稱作的操作稱作排序排序。710.1.2 比較的標(biāo)準(zhǔn)比較的標(biāo)準(zhǔn)穩(wěn)定性穩(wěn)定性 不穩(wěn)定性不穩(wěn)定性 排序過后能使值相同的數(shù)據(jù)保排序過后能使值相同的數(shù)據(jù)保持原順序中的相對(duì)位置持原順序中的相對(duì)位置 排序過后不能使值相同的數(shù)據(jù)排序過后不能使值相同的數(shù)據(jù)保持原順序中的相對(duì)位置保持原順序中的相對(duì)位置 4932564927

4、2732494956l 空間復(fù)雜度空間復(fù)雜度l 時(shí)間復(fù)雜度時(shí)間復(fù)雜度l 穩(wěn)定性穩(wěn)定性8內(nèi)部排序內(nèi)部排序 外部排序外部排序 將欲處理的數(shù)據(jù)整個(gè)存放到內(nèi)部存將欲處理的數(shù)據(jù)整個(gè)存放到內(nèi)部存儲(chǔ)器中排序,數(shù)據(jù)可被隨機(jī)存取儲(chǔ)器中排序,數(shù)據(jù)可被隨機(jī)存取插入式排序插入式排序 交換式排序交換式排序 選擇式排序選擇式排序 借助外部的輔助存儲(chǔ)器(比如:硬借助外部的輔助存儲(chǔ)器(比如:硬盤),由于數(shù)據(jù)是存在外存中,故盤),由于數(shù)據(jù)是存在外存中,故數(shù)據(jù)不可隨機(jī)被存取數(shù)據(jù)不可隨機(jī)被存取 10.1.3 10.1.3 排序的分類排序的分類歸并排序歸并排序 基數(shù)排序基數(shù)排序 910.1.4 排序基本操作排序基本操作(1)比較兩個(gè)

5、排序碼的大小;)比較兩個(gè)排序碼的大小;(2)改變指向記錄的指針或移動(dòng)記錄)改變指向記錄的指針或移動(dòng)記錄本身。本身。 注意:注意: 第第(2)(2)種基本操作的實(shí)現(xiàn)依賴于待排序種基本操作的實(shí)現(xiàn)依賴于待排序記錄的存儲(chǔ)方式。記錄的存儲(chǔ)方式。 所以排序的時(shí)間開銷可用算法執(zhí)行中的所以排序的時(shí)間開銷可用算法執(zhí)行中的數(shù)據(jù)比較次數(shù)數(shù)據(jù)比較次數(shù)與與數(shù)據(jù)移動(dòng)次數(shù)數(shù)據(jù)移動(dòng)次數(shù)來衡量。來衡量。 1010.1.5 內(nèi)部排序的方法內(nèi)部排序的方法內(nèi)部排序的過程是一個(gè)逐步擴(kuò)大內(nèi)部排序的過程是一個(gè)逐步擴(kuò)大記錄的有序序列長度的過程。記錄的有序序列長度的過程。經(jīng)過一趟排序經(jīng)過一趟排序有序序列區(qū)無 序 序 列 區(qū)有序序列區(qū)無 序 序

6、 列 區(qū)1110.1.6 存儲(chǔ)方式存儲(chǔ)方式1. 地址連續(xù)的一組存儲(chǔ)單元(地址連續(xù)的一組存儲(chǔ)單元(記錄之間記錄之間的次序關(guān)系由存儲(chǔ)位置決定,實(shí)現(xiàn)排序的次序關(guān)系由存儲(chǔ)位置決定,實(shí)現(xiàn)排序必須借助移動(dòng)記錄必須借助移動(dòng)記錄)2. 靜態(tài)鏈表(靜態(tài)鏈表(記錄之間的次序關(guān)系由指記錄之間的次序關(guān)系由指針指示,實(shí)現(xiàn)排序不需要移動(dòng)記錄,僅針指示,實(shí)現(xiàn)排序不需要移動(dòng)記錄,僅需修改指針需修改指針)鏈表排序鏈表排序12存儲(chǔ)方式存儲(chǔ)方式3. 地址連續(xù)的一組存儲(chǔ)單元,另設(shè)一個(gè)地址連續(xù)的一組存儲(chǔ)單元,另設(shè)一個(gè)指示各個(gè)記錄存儲(chǔ)位置的地址向量,指示各個(gè)記錄存儲(chǔ)位置的地址向量,在在排序過程中不移動(dòng)記錄本身,而移動(dòng)地排序過程中不移動(dòng)記

7、錄本身,而移動(dòng)地址向量中的地址,址向量中的地址,在排序之后再按照地在排序之后再按照地址向量中的值調(diào)整記錄的存儲(chǔ)位置址向量中的值調(diào)整記錄的存儲(chǔ)位置地址排序地址排序13待排記錄的數(shù)據(jù)類型定義如下待排記錄的數(shù)據(jù)類型定義如下:#define MAXSIZE 20 / 待排順序表最大長度待排順序表最大長度typedef int KeyType; / 關(guān)鍵字類型為整數(shù)類型關(guān)鍵字類型為整數(shù)類型typedef struct KeyType key; / 關(guān)鍵字項(xiàng)關(guān)鍵字項(xiàng) InfoType otherinfo; / 其它數(shù)據(jù)項(xiàng)其它數(shù)據(jù)項(xiàng) RedType; / 記錄類型記錄類型typedef struct Red

8、Type rMAXSIZE+1; / r0閑置閑置 int length; / 順序表長度順序表長度 SqList; / 順序表類型順序表類型1410.2 10.2 插插 入入 排排 序序15有序序列有序序列R1.i-1Ri無序序列無序序列 Ri.n一趟直接插入排序的基本思想:一趟直接插入排序的基本思想:有序序列有序序列R1.i無序序列無序序列 Ri+1.n將無序子序列中的將無序子序列中的一個(gè)或一個(gè)或幾個(gè)記錄幾個(gè)記錄“插入插入”到有序到有序序列中,從而增加記錄的序列中,從而增加記錄的有序子序列的長度。有序子序列的長度。16實(shí)現(xiàn)實(shí)現(xiàn)“一趟插入排序一趟插入排序”可分三步進(jìn)行:可分三步進(jìn)行:3將將R

9、i 插入插入(復(fù)制復(fù)制)到到Rj+1的位置上。的位置上。2將將Rj+1.i-1中的所有中的所有記錄記錄均均后移后移 一個(gè)位置;一個(gè)位置;1在在R1.i-1中中查找查找Ri的插入位置;的插入位置; R1.j.key Ri.key Rj+1.i-1.key17直接插入排序直接插入排序(基于順序查找)(基于順序查找)不同的具體實(shí)現(xiàn)方法導(dǎo)致不同的算法描述不同的具體實(shí)現(xiàn)方法導(dǎo)致不同的算法描述折半插入排序折半插入排序(基于折半查找)(基于折半查找)希爾排序希爾排序(基于逐趟縮小增量)(基于逐趟縮小增量)1810.2.1 直接插入排序直接插入排序利用利用 “順序查找順序查找”實(shí)現(xiàn)實(shí)現(xiàn) “在在R1.i-1中中

10、查找查找Ri的插入位置的插入位置”。1.算法的實(shí)現(xiàn)要點(diǎn)算法的實(shí)現(xiàn)要點(diǎn)19例如:例如:49 38 65 97 76 13 27i=2 38 (38 49) 65 97 76 13 27i=3 65 (38 49 65) 97 76 13 27i=4 97 (38 49 65 97) 76 13 27i=5 76 (38 49 65 76 97) 13 27i=6 13 (13 38 49 65 76 97) 27i=1 ( )i=7 (13 38 49 65 76 97) 2727jjjjjj977665493827 (13 27 38 49 65 76 97)排序結(jié)果:排序結(jié)果:L.rj+1

11、= L.r0;20(1)從)從Ri-1起向前進(jìn)行順序查找,起向前進(jìn)行順序查找, 監(jiān)視哨設(shè)置在監(jiān)視哨設(shè)置在R0;R0 = Ri; / 設(shè)置設(shè)置“哨兵哨兵”循環(huán)結(jié)束表明循環(huán)結(jié)束表明Ri的插入位置為的插入位置為 j +1R0jRifor (j=i-1; R0.keyRj.key; -j); / 從后往前找從后往前找j=i-1插入位置插入位置j+121(2)對(duì)于在查找過程中找到的那些關(guān))對(duì)于在查找過程中找到的那些關(guān)鍵字不小于鍵字不小于Ri.key的記錄,并在查找的記錄,并在查找的同時(shí)實(shí)現(xiàn)記錄向后移動(dòng);的同時(shí)實(shí)現(xiàn)記錄向后移動(dòng);for (j=i-1; R0.keyRj.key; -j); Rj+1 = R

12、j(3)上述循環(huán)結(jié)束后可以直接進(jìn)行)上述循環(huán)結(jié)束后可以直接進(jìn)行“插插入入”。L.rj+1 = L.r0;22void InsertionSort ( SqList &L ) / 對(duì)順序表 L 作直接插入排序 for ( i=2; i=L.length; +i ) if (L.ri.key L.ri-1.key) / InsertSortL.r0 = L.ri; / 復(fù)制為監(jiān)視哨復(fù)制為監(jiān)視哨for ( j=i-1; L.r0.key L.rj.key; - j ) L.rj+1 = L.rj; / 記錄后移記錄后移L.rj+1 = L.r0; / 插入到正確位置插入到正確位置2.算法實(shí)現(xiàn)

13、算法實(shí)現(xiàn)233.性能分析性能分析直接插入排序的直接插入排序的基本操作基本操作有兩個(gè):有兩個(gè):l“移動(dòng)移動(dòng)”記錄。記錄。l“比較比較”序列中兩個(gè)關(guān)鍵字的大序列中兩個(gè)關(guān)鍵字的大??;小;24(1)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度最好的情況(關(guān)鍵字正序)最好的情況(關(guān)鍵字正序)“比較比較”的次數(shù):的次數(shù):最壞的情況(關(guān)鍵字逆序)最壞的情況(關(guān)鍵字逆序)“比較比較”的次數(shù):的次數(shù):112nni02) 1)(4() 1(2nnini“移動(dòng)移動(dòng)”的次數(shù):的次數(shù):“移動(dòng)移動(dòng)”的次數(shù):的次數(shù):2) 1)(4() 1(2nnini25平均時(shí)間復(fù)雜度:平均時(shí)間復(fù)雜度:O(n2)(2)空間復(fù)雜度)空間復(fù)雜度 需要一個(gè)記錄的輔助

14、空間需要一個(gè)記錄的輔助空間r(0)。(3)穩(wěn)定性)穩(wěn)定性 穩(wěn)定穩(wěn)定特點(diǎn):特點(diǎn):簡單、容易實(shí)現(xiàn),簡單、容易實(shí)現(xiàn),適用于待適用于待排序記錄基本有序或待排序記錄較排序記錄基本有序或待排序記錄較小時(shí)。小時(shí)。261.基本思想:基本思想:因?yàn)橐驗(yàn)?R1.i-1 是一個(gè)按是一個(gè)按關(guān)鍵字有序的有序序列,則可以關(guān)鍵字有序的有序序列,則可以利用利用折半查找實(shí)現(xiàn)折半查找實(shí)現(xiàn)“在在R1.i-1中中查找查找Ri的的插入位置插入位置”,如此實(shí)現(xiàn)的插入排序,如此實(shí)現(xiàn)的插入排序?yàn)闉檎郯氩迦胝郯氩迦肱判颉E判颉?0.2.2 折半插入排序折半插入排序2714 36 49 52 80 58 61 23 97 75ilowhighm

15、mlowlowmhigh14 36 49 52 58 61 80 23 97 75ilowhighmhighmhighmlow例如例如:再如再如:插入插入位置位置插入插入位置位置L.rL.rL.rhigh+1 = L.r0; / 插入插入28void BiInsertionSort ( SqList &L ) / BInsertSort/在在 L.r1.i-1中折半查找插入位置;中折半查找插入位置;for ( i=2; i=high+1; -j ) L.rj+1 = L.rj; / 記錄后移記錄后移L.rhigh+1 = L.r0; / 插入插入2.算法實(shí)現(xiàn)算法實(shí)現(xiàn)29low = 1;

16、 high = i-1;while (low=high) m = (low+high)/2; / 折半折半if (L.r0.key L.rm.key) high = m-1; / 插入點(diǎn)在低半?yún)^(qū)插入點(diǎn)在低半?yún)^(qū)else low = m+1; / 插入點(diǎn)在高半?yún)^(qū)插入點(diǎn)在高半?yún)^(qū)/在在 L.r1.i-1中折半查找插入位置中折半查找插入位置(是否完是否完善?善?)303.3.算法分析算法分析(1)(1)穩(wěn)定性:穩(wěn)定穩(wěn)定性:穩(wěn)定(2)(2)空間復(fù)雜度:空間復(fù)雜度:O(1)(1)(3)(3)時(shí)間復(fù)雜度時(shí)間復(fù)雜度 比較次數(shù)與待排記錄的初始順序無關(guān),只依賴比較次數(shù)與待排記錄的初始順序無關(guān),只依賴記錄個(gè)數(shù);記錄個(gè)

17、數(shù);插入每個(gè)記錄需要插入每個(gè)記錄需要O(log(log2 2i)i)次比較次比較最多移動(dòng)最多移動(dòng)i+1i+1次,最少次,最少2 2次(臨時(shí)記錄)次(臨時(shí)記錄)最佳情況最佳情況下總時(shí)間代價(jià)為下總時(shí)間代價(jià)為O(nlog(nlog2 2n)n) ,最差最差和和平均平均情況下仍為情況下仍為O(n(n2 2) )。319.2.3希爾排序(又稱縮小增量排序)希爾排序(又稱縮小增量排序)1.基本思想基本思想 把待排序的數(shù)據(jù)元素分成若干個(gè)小組,把待排序的數(shù)據(jù)元素分成若干個(gè)小組,對(duì)同一小組內(nèi)的數(shù)據(jù)元素用直接插入法排對(duì)同一小組內(nèi)的數(shù)據(jù)元素用直接插入法排序;小組的個(gè)數(shù)逐次縮??;當(dāng)完成了所有序;小組的個(gè)數(shù)逐次縮小;當(dāng)

18、完成了所有數(shù)據(jù)元素都在一個(gè)組內(nèi)的排序后排序過程數(shù)據(jù)元素都在一個(gè)組內(nèi)的排序后排序過程結(jié)束。結(jié)束。32例如:例如:6565 343425258787 121238385656 464614147777 92922323565665651414252577778787383823235656343414147777121223236565464625258787929238386565777712123434565612121414656534342323777746462525878792923838121214142323252534343838464656566565777787879292結(jié)

19、果序列結(jié)果序列d=6d=3d=133void ShellInsert ( SqList &L, int dk ) for ( i=dk+1; i=L.length ; +i ) if ( L.ri.key0&(L.r0.keyL.rj.key); j-=dk) L.rj+dk = L.rj; / 記錄后移,查找插入位置 L.rj+dk = L.r0; / 插入 / if / ShellInsert2.算法實(shí)現(xiàn)算法實(shí)現(xiàn)34void ShellSort (SqList &L, int dlta, int t) / 增量為dlta的希爾排序 for (k=0; kt; +k)

20、 ShellInsert(L, dltak); /一趟增量為dltak的插入排序 / ShellSort353.3.算法分析算法分析(1 1)增量序列的選擇)增量序列的選擇 ShellShell排序的執(zhí)行時(shí)間依賴于增量序列。排序的執(zhí)行時(shí)間依賴于增量序列。 好的增量序列的共同特征:好的增量序列的共同特征: 最后一個(gè)增量必須為最后一個(gè)增量必須為1 1; 應(yīng)該盡量避免序列中的值應(yīng)該盡量避免序列中的值( (尤其是相尤其是相鄰的值鄰的值) )互為倍數(shù)的情況。互為倍數(shù)的情況。dlta0=L.length /2+1;for(k=1;kt;k+)dltak=dltak-1/2;363.3.算法分析算法分析(2

21、 2)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度 O(n3/2) (3 3)穩(wěn)定性)穩(wěn)定性 不穩(wěn)定。不穩(wěn)定。3710.3 交換類排序交換類排序通過通過“交換交換”無序序列中的記錄從無序序列中的記錄從而得到其中而得到其中關(guān)鍵字最小關(guān)鍵字最小或或最大最大的記錄,的記錄,并將它并將它加入到有序子序列中加入到有序子序列中,以此方法,以此方法增加記錄的有序子序列的長度。增加記錄的有序子序列的長度。冒泡排序冒泡排序快速排序快速排序3810.3.1 10.3.1 冒泡排序冒泡排序1.1.基本思想基本思想(1 1)依次比較相鄰兩個(gè)數(shù)據(jù)元素的大小,)依次比較相鄰兩個(gè)數(shù)據(jù)元素的大小,若逆序則交換兩個(gè)數(shù)據(jù)元素,否則不交換。若逆序則交換

22、兩個(gè)數(shù)據(jù)元素,否則不交換。(2 2)當(dāng)完成一趟交換以后,最大的元素)當(dāng)完成一趟交換以后,最大的元素將會(huì)出現(xiàn)在數(shù)據(jù)序列的最后一個(gè)位置。將會(huì)出現(xiàn)在數(shù)據(jù)序列的最后一個(gè)位置。(3 3)重復(fù)以上過程,直到待排序序列中)重復(fù)以上過程,直到待排序序列中沒有逆序?yàn)橹?。沒有逆序?yàn)橹埂?9例如例如 :493865977613274997979738492713766549384927651349384927134938492713382713767665494938特點(diǎn):特點(diǎn):1.n1.n個(gè)數(shù)排序共需進(jìn)行個(gè)數(shù)排序共需進(jìn)行n-1n-1趟比較趟比較2.2.第第i i趟共需要進(jìn)行趟共需要進(jìn)行n-in-i次比較次比較40

23、void bubblf_sort(SqList &L) /自小至大有序 for(i=1,i=L.length-1;+i) for(j=1;jL.length-1;+j) if(LT(L.rj+1.key,L.rj.key) L.rj L.rj+1/bubblf_sort1 15 24 6 17 5 1 15 6 17 5 241 15 6 17 5 241 6 15 5 17 24假設(shè)假設(shè)L.length=nL.length=n,則總共比較,則總共比較n n2 2次次2.2.冒泡排序算法冒泡排序算法原始算法原始算法41void bubblf_sort(SqList &L) /自

24、小至大有序for(i=1;i=L.length-1;+i) for(j=1;jL.length-i;+j) /n-i已經(jīng)有序 if(L.rj+1.keyL.rj.key) L.rj L.rj+1/bubblf_sort1 15 24 6 17 5 1 15 6 17 5 241 15 6 17 5 241 6 15 5 17 24注意第注意第i趟比較了趟比較了n-i次,則可以有效的減少比較次數(shù)次,則可以有效的減少比較次數(shù)比較的總的次數(shù)是比較的總的次數(shù)是1+2+1+2+n-1=n(n-1)/2+n-1=n(n-1)/2改進(jìn)算法改進(jìn)算法42問題:剛才的改進(jìn)算法是否已經(jīng)最優(yōu)問題:剛才的改進(jìn)算法是否已

25、經(jīng)最優(yōu)1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 分析:分析:因?yàn)榻o定的待排序序列已經(jīng)是一個(gè)正序因?yàn)榻o定的待排序序列已經(jīng)是一個(gè)正序的序列,經(jīng)過第一趟的比較以后,已經(jīng)的序列,經(jīng)過第一趟的比較以后,已經(jīng)沒有交沒有交換發(fā)生換發(fā)生,但是算法仍然會(huì)繼續(xù)執(zhí)行。,但是算法仍然會(huì)繼續(xù)執(zhí)行。解決:解決:添加一個(gè)算法的結(jié)束條件添加一個(gè)算法的結(jié)束條件,即當(dāng)某一,即當(dāng)某一趟排序過程中只有比較而沒有交換的時(shí)候,趟排序過程中只有比較而沒有交換的時(shí)候,就認(rèn)定序列已經(jīng)有序,可以提前結(jié)束循環(huán)。就認(rèn)定序列已經(jīng)有序,可以提前結(jié)束循環(huán)

26、。改進(jìn)算法改進(jìn)算法43void bubblf_sort(SqList &L) 自小至大有序 for(i=1,chang=TRUE;i=L.length-1&chang;+i) chang=FALSE; for(j=1;j=L.length-i;+j) if(L.rj+1.keyL.rj.key) x=L.rj;L.rj+1=L.rj; L.rj =x; chang=TRUE; /end if /end for /bubblf_sort算法實(shí)現(xiàn)算法實(shí)現(xiàn)443.3.算法分析算法分析(1 1)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度最好的情況最好的情況(關(guān)鍵字在記錄序列中順序有序)(關(guān)鍵字在記錄序列中

27、順序有序) 只需進(jìn)行一趟冒泡只需進(jìn)行一趟冒泡“比較比較”的次數(shù):的次數(shù):最壞的情況(關(guān)鍵字在記錄序列中逆序有序)最壞的情況(關(guān)鍵字在記錄序列中逆序有序) 需進(jìn)行需進(jìn)行n-1趟冒泡趟冒泡“比較比較”的次數(shù):的次數(shù):0“移動(dòng)移動(dòng)”的次數(shù):的次數(shù):“移動(dòng)移動(dòng)”的次數(shù):的次數(shù):n-12) 1() 1(2nnini2) 1(3) 1(32nnini45平均時(shí)間復(fù)雜度平均時(shí)間復(fù)雜度 O(n2)(2)空間復(fù)雜度:)空間復(fù)雜度:O(1)(3)穩(wěn)定性:穩(wěn)定)穩(wěn)定性:穩(wěn)定4610.3.2 10.3.2 快速排序快速排序由于在冒泡排序的掃描過程中只對(duì)相鄰由于在冒泡排序的掃描過程中只對(duì)相鄰的元素進(jìn)行比較,因此,在交換

28、兩個(gè)元素的元素進(jìn)行比較,因此,在交換兩個(gè)元素時(shí),只能消除一個(gè)逆序。時(shí),只能消除一個(gè)逆序。 如果能通過如果能通過兩個(gè)不相鄰元素的交換兩個(gè)不相鄰元素的交換,消,消除多個(gè)逆序,則會(huì)大大加快排序的速度。除多個(gè)逆序,則會(huì)大大加快排序的速度。 快速排序可以實(shí)現(xiàn)之。快速排序可以實(shí)現(xiàn)之。471.算法思想算法思想(1)找一個(gè)記錄,以它的關(guān)鍵字作為找一個(gè)記錄,以它的關(guān)鍵字作為“樞軸樞軸”,凡其,凡其關(guān)鍵字小于樞軸關(guān)鍵字小于樞軸的記錄均的記錄均移動(dòng)至該記錄之前,移動(dòng)至該記錄之前,反之,凡反之,凡關(guān)鍵字大于關(guān)鍵字大于樞軸樞軸的記錄均的記錄均移動(dòng)至該記錄之后移動(dòng)至該記錄之后。Ls.i-1 樞軸樞軸 Li+1.t(2)對(duì)

29、分割)對(duì)分割 后的兩個(gè)子表重復(fù)上述過程,后的兩個(gè)子表重復(fù)上述過程,直到子表的表長不超過直到子表的表長不超過1為止。為止。48例如例如 :49 38 65 97 76 13 27 49pivotkey=49lowhigh27low65high13low97highhigh49第一趟結(jié)果:第一趟結(jié)果: 27 38 13 27 38 13 4949 76 97 65 76 97 65 4949 小于小于49大于等于大于等于494949 在調(diào)整過程中,對(duì)樞軸記錄的賦值是多在調(diào)整過程中,對(duì)樞軸記錄的賦值是多余的,一趟排序結(jié)束后,余的,一趟排序結(jié)束后,low=high的位置的位置才是樞軸記錄的最后位置。才

30、是樞軸記錄的最后位置。 因此,因此,R0=Rlow,一趟結(jié)束后,一趟結(jié)束后, Rlow = R0 /樞軸直接定位 不需要不需要進(jìn)行記錄的多次進(jìn)行記錄的多次“交換交換”。50int Partition (SqList &L, int low, int high) / Partition L.r 0 = L.r low; pivotkey = L.r low.key; while (lowhigh) while(low=pivotkey) - high; / 從右向左搜索L.r low = L.r high;while (lowhigh & L.r low.key=pivotkey

31、) + low; / 從左向右搜索L.r high = L.r low;L.r low = L.r0; return low;2.算法實(shí)現(xiàn)算法實(shí)現(xiàn)51void QSort (SqList &L,int low, int high ) / 對(duì)記錄序列Llow.high進(jìn)行快速排序 if (low high) / 長度大于1 / QSortpivotloc = Partition(L, low, high); / 對(duì) Llow.high 進(jìn)行一次劃分一次劃分QSort(L, low, pivotloc-1); / 對(duì)低子表遞歸排序,pivotloc是樞軸位置是樞軸位置QSort(L, pi

32、votloc+1, high); / 對(duì)高子表遞歸排序52void QuickSort( SqList & L) / 對(duì)順序表進(jìn)行快速排序 QSort(L.r, 1, L.length); / QuickSort 第一次調(diào)用函數(shù)第一次調(diào)用函數(shù) Qsort 時(shí),待排序記錄時(shí),待排序記錄序列的上、下界分別為序列的上、下界分別為 1 和和 L.length。533. 算法分析算法分析(1)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度假設(shè)假設(shè)一次劃分所得樞軸位置一次劃分所得樞軸位置 i=k,則對(duì),則對(duì)n 個(gè)個(gè)記錄進(jìn)行快排所需時(shí)間:記錄進(jìn)行快排所需時(shí)間:其中其中 Tpass(n)為對(duì)為對(duì) n 個(gè)記錄進(jìn)行一次劃分個(gè)記錄

33、進(jìn)行一次劃分所需時(shí)間。所需時(shí)間。T(n) = Tpass(n) + T(k-1) + T(n-k)54最壞情況最壞情況 O(n2)最好情況最好情況 O(n log2n )平均平均 O(nlogn)(2 2)空間復(fù)雜度)空間復(fù)雜度若每次劃分較為均勻,則其遞歸樹的高若每次劃分較為均勻,則其遞歸樹的高度為度為O(lgn)O(lgn),故遞歸后需棧空間為,故遞歸后需棧空間為O(lgn)O(lgn)。最壞情況下,遞歸樹的高度為。最壞情況下,遞歸樹的高度為O(n)O(n),所需的棧空間為,所需的棧空間為O(n)O(n)。(3 3)穩(wěn)定性)穩(wěn)定性 不穩(wěn)定不穩(wěn)定 。5510.4 選擇類排序選擇類排序10.4.

34、1 10.4.1 簡單選擇排序簡單選擇排序10.4.2 10.4.2 樹形選擇排序樹形選擇排序10.4.3 10.4.3 堆排序堆排序56選擇類排序的算法思想:選擇類排序的算法思想:假設(shè)排序過程中,待排記錄序列的狀態(tài)為:假設(shè)排序過程中,待排記錄序列的狀態(tài)為:有序序列有序序列R1.i-1無序序列無序序列 Ri.n 第第 i 趟排序趟排序從中選出從中選出關(guān)鍵字最小的記錄關(guān)鍵字最小的記錄有序序列有序序列R1.i無序序列無序序列 Ri+1.n5710.4.1 簡單選擇排序簡單選擇排序1.算法思想算法思想有序序列有序序列R1.i-1無序序列無序序列 Ri.n 第第 i 趟趟簡單選擇排序簡單選擇排序從中選

35、出從中選出關(guān)鍵字最小的記錄關(guān)鍵字最小的記錄有序序列有序序列R1.i無序序列無序序列 Ri+1.n58例如:例如:149238365497576613727849ki=1jkjjjjkjjk134959例如:例如:149238365497576613727849kjjjjjj1349k k2602.算法實(shí)現(xiàn)算法實(shí)現(xiàn)void SelectSort (SqList &L) / 對(duì)記錄序列R1. L.length作簡單選擇排序 for (i=1; iL.length; +i) k=i; / SelectSortfor (j=i+1; j=L.length ; +j) if(L.rj.keyL.

36、rk.key)k=j;if (i!=k) Swap(L.ri ,L.rk ); /交換613.算法分析算法分析(1)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度 最壞情況:最壞情況:3(3(n n-1)-1)次次移動(dòng)次數(shù):移動(dòng)次數(shù):最好情況(正序):最好情況(正序):0 0次次比較次數(shù):比較次數(shù):)() 1(21211nOnninni )(簡單選擇排序的時(shí)間復(fù)雜度為簡單選擇排序的時(shí)間復(fù)雜度為O O( (n n2 2) )。62(2)空間復(fù)雜度)空間復(fù)雜度 O(1)(3)穩(wěn)定性)穩(wěn)定性 不穩(wěn)定不穩(wěn)定 。6310.4.2 樹形選擇排序樹形選擇排序( (錦標(biāo)賽排序錦標(biāo)賽排序) )1.基本思想基本思想(1 1)取得)取得

37、n n 個(gè)對(duì)象的關(guān)鍵碼,進(jìn)行個(gè)對(duì)象的關(guān)鍵碼,進(jìn)行兩兩兩比較兩比較,得到,得到 n/2 n/2 個(gè)比較的優(yōu)勝者個(gè)比較的優(yōu)勝者( (關(guān)關(guān)鍵碼小者鍵碼小者) ),作為第一步比較的結(jié)果保留,作為第一步比較的結(jié)果保留下來。下來。(2 2)這)這 n/2 n/2 個(gè)對(duì)象再進(jìn)行關(guān)鍵碼的個(gè)對(duì)象再進(jìn)行關(guān)鍵碼的兩兩兩比較兩比較,如此重復(fù),直到選出一個(gè),如此重復(fù),直到選出一個(gè)關(guān)鍵碼最小的對(duì)象為止。關(guān)鍵碼最小的對(duì)象為止。64133813973865493876131327652749例如:例如:65139749387613652749381338651327273827386576276627974938761365

38、27493827386576271338384938657649672.算法分析算法分析(1)含有)含有n個(gè)葉子節(jié)點(diǎn)的完全二叉樹的個(gè)葉子節(jié)點(diǎn)的完全二叉樹的深度為深度為log2n+1,則選擇排序的每一趟都則選擇排序的每一趟都需作需作log2n次比較,排序的時(shí)間復(fù)雜度次比較,排序的時(shí)間復(fù)雜度O(nlog2n)。(2)需要輔助存儲(chǔ)空間較多()需要輔助存儲(chǔ)空間較多(n-1),),和最大值作多余的比較等等。和最大值作多余的比較等等。6810.4.3 堆排序堆排序1.堆:堆:把待排序的數(shù)據(jù)元素存放在數(shù)組中把待排序的數(shù)據(jù)元素存放在數(shù)組中r1r1nn,把,把r r看成是一棵完全二叉樹,每看成是一棵完全二叉樹,

39、每個(gè)結(jié)點(diǎn)表示一個(gè)記錄。個(gè)結(jié)點(diǎn)表示一個(gè)記錄。riri結(jié)點(diǎn)的左孩子結(jié)點(diǎn)的左孩子是是r2ir2i,右孩子是,右孩子是r2i+1r2i+1。 若若ri.key=r2i.keyri.key=r2i.key,并且,并且 ri.key=r2i+1.keyri.key=r2i.keyri.key=r2i.key,并且,并且 ri.key=r2i+1.keyri.key=r2i+1.key,則稱此完全二,則稱此完全二叉樹為堆。(大根堆)叉樹為堆。(大根堆)大根堆大根堆小根堆小根堆712.堆排序算法思想(以小根堆為例)堆排序算法思想(以小根堆為例)(1 1)以初始關(guān)鍵字序列,)以初始關(guān)鍵字序列,建立堆建立堆; (

40、2 2)輸出堆頂最小元素;)輸出堆頂最小元素;(3 3)調(diào)整調(diào)整余下的元素,使其成為一個(gè)新余下的元素,使其成為一個(gè)新堆;堆;(4 4)重復(fù))重復(fù)2,32,3步,直到步,直到n n個(gè)元素輸出,得個(gè)元素輸出,得到到 一個(gè)有序序列。一個(gè)有序序列。關(guān)鍵問題:關(guān)鍵問題:(1 1)如何由一個(gè)無序序列建成一個(gè)堆)如何由一個(gè)無序序列建成一個(gè)堆? ? (2 2)如何調(diào)整余下的元素成為一個(gè)新堆)如何調(diào)整余下的元素成為一個(gè)新堆? ? 72例如,堆調(diào)整過程例如,堆調(diào)整過程1338277697654949rc=1373void HeapAdjust (HeapType &H, int s, int m) / 已

41、知 H.r s.m中記錄的關(guān)鍵字除 H.r s 之外均 / 滿足堆的特征,本函數(shù)自上而下調(diào)整 H.r s 的 / 關(guān)鍵字,使 H.r s.m 也成為一個(gè)大頂堆。 / HeapAdjustrc = H.r s; / 暫存 H.r s for ( j=2*s; j= H.rj.key ) break; / 再作“根”和“子樹根”之間的比較, / 若“=”成立,則說明已找到 rc 的插 / 入位置 s ,不需要繼續(xù)往下調(diào)整H.rs = H.rj; s = j; / 否則記錄上移,尚需繼續(xù)往下調(diào)整if ( jm & H.rj.key0; -i ) HeapAdjust ( H, i, H.le

42、ngth ); / 建大頂堆for ( i=H.length; i1; -i ) H.r1H.ri; / 將堆頂記錄和當(dāng)前未經(jīng)排序子序列 / H.r1.i中最后一個(gè)記錄相互交換 HeapAdjust(H, 1, i-1);/將H.r1.i-1重新調(diào)整為大頂堆773.3.算法分析算法分析(1) 時(shí)間復(fù)雜度時(shí)間復(fù)雜度 O(nlog2n)(2) 空間復(fù)雜度空間復(fù)雜度 O(1)(3) 穩(wěn)定性穩(wěn)定性 不穩(wěn)定不穩(wěn)定7810.5 歸歸 并并 排排 序序1.基本思想基本思想 將一個(gè)具有將一個(gè)具有n n個(gè)待排序記錄的序列個(gè)待排序記錄的序列看成是看成是n n個(gè)長度為個(gè)長度為1 1的有序序列,然后進(jìn)的有序序列,然后

43、進(jìn)行行兩兩歸并兩兩歸并,得到得到n n/2/2個(gè)長度為個(gè)長度為2 2的有序的有序序列,序列,再進(jìn)行兩兩歸并,得到再進(jìn)行兩兩歸并,得到n n/4/4個(gè)長個(gè)長度為度為4 4的有序序列,的有序序列,直至得到一,直至得到一個(gè)長度為個(gè)長度為n n的有序序列為止。的有序序列為止。79例如:歸并排序過程例如:歸并排序過程 (49) (38) (65) (97) (76) (13) (27)(38 49) (38 49 65 97)(65 97)(13 76)(27)(13 27 38 49 65 76 97) (13 27 76)80void Merge (RedType SR, RedType TR, i

44、nt i, int m, int n) / 將有序的記錄序列 SRi.m 和 SRm+1.n / 歸并為有序的記錄序列 TRi.n / Mergefor (j=m+1, k=i; i=m & j=n; +k) / 將SR中記錄由小到大地并入TR if (SRi.key=SRj.key) TRk = SRi+; else TRk = SRj+; 2.2.算法實(shí)現(xiàn)算法實(shí)現(xiàn)81if (i=m) / 將剩余的 SRi.m 復(fù)制到 TR while(i=m)TRk+.key = SRi+.key; if (j=n) / 將剩余的 SRj.n 復(fù)制到 TR while(j=n)TRk+.key =

45、 SRj+.key; 82void Msort ( RedType SR, RedType &TR1, int s, int t ) / 將SRs.t 歸并排序?yàn)?TR1s.t if (s= =t) TR1s=SRs; else / Msort 83m = (s+t)/2; / 將SRs.t平分為SRs.m和SRm+1.tMsort (SR, TR2, s, m); / 遞歸地將SRs.m歸并為有序的TR2s.mMsort (SR, TR2, m+1, t); /遞歸地SRm+1.t歸并為有序的TR2m+1.tMerge (TR2, TR1, s, m, t); / 將TR2s.m和T

46、R2m+1.t歸并到TR1s.t84void MergeSort (SqList &L) / 對(duì)順序表 L 作2-路歸并排序 MSort(L.r, L.r, 1, L.length); / MergeSort容易看出,對(duì)容易看出,對(duì) n 個(gè)記錄進(jìn)行歸并排序的個(gè)記錄進(jìn)行歸并排序的時(shí)間復(fù)雜度為時(shí)間復(fù)雜度為(nlogn)。即:即: 每一趟歸并的時(shí)間復(fù)雜度為每一趟歸并的時(shí)間復(fù)雜度為 O(n), 總共需進(jìn)行總共需進(jìn)行 log2n 趟。趟。853.算法分析算法分析(1)時(shí)間復(fù)雜度)時(shí)間復(fù)雜度每一趟歸并的時(shí)間復(fù)雜度為每一趟歸并的時(shí)間復(fù)雜度為 O(n), 總共總共需進(jìn)行需進(jìn)行 log2n 趟。所以對(duì)趟

47、。所以對(duì) n 個(gè)記錄進(jìn)行個(gè)記錄進(jìn)行歸并排序的時(shí)間復(fù)雜度為歸并排序的時(shí)間復(fù)雜度為(nlog2n)。(2)空間復(fù)雜度)空間復(fù)雜度 O(n)(3)穩(wěn)定性:)穩(wěn)定性:穩(wěn)定穩(wěn)定86基數(shù)排序是一種借助基數(shù)排序是一種借助“多關(guān)鍵字多關(guān)鍵字排序排序”的思想來實(shí)現(xiàn)的思想來實(shí)現(xiàn)“單關(guān)鍵字排單關(guān)鍵字排序序”的內(nèi)部排序算法。的內(nèi)部排序算法。10.6.1 多關(guān)鍵字的排序多關(guān)鍵字的排序10.6.2 鏈?zhǔn)交鶖?shù)排序鏈?zhǔn)交鶖?shù)排序10.6 基基 數(shù)數(shù) 排排 序序8710.6.1 多關(guān)鍵字的排序多關(guān)鍵字的排序1.多關(guān)鍵字多關(guān)鍵字n 個(gè)記錄的序列個(gè)記錄的序列 R1, R2, ,Rn對(duì)關(guān)鍵字對(duì)關(guān)鍵字 (Ki0, Ki1, ,Kid-1

48、) ) 有序有序是指:是指: 其中其中: : K0 被稱為被稱為 “最主最主”位關(guān)鍵字,位關(guān)鍵字,Kd-1 被稱為被稱為 “最次最次”位關(guān)鍵字位關(guān)鍵字。 對(duì)于序列中任意兩個(gè)記錄對(duì)于序列中任意兩個(gè)記錄 Ri 和和 Rj(1ijn) 都都滿足滿足下列下列(詞典詞典)有序有序關(guān)系:關(guān)系: (Ki0, Ki1, , ,Kid-1) ) (Kj0, Kj1, , ,Kjd-1) )88 實(shí)現(xiàn)多關(guān)鍵字排序?qū)崿F(xiàn)多關(guān)鍵字排序通常有兩種方法通常有兩種方法: :最低位優(yōu)先最低位優(yōu)先LSD法法最高位優(yōu)先最高位優(yōu)先MSD法法89先對(duì)先對(duì)K0進(jìn)行排序進(jìn)行排序,并按,并按 K0 的不同的不同值將記錄序列值將記錄序列分成若

49、干子序列分成若干子序列之之后,后,分別對(duì)分別對(duì) K1 進(jìn)行排序進(jìn)行排序,., 依次類推,依次類推,直至最后對(duì)最次位關(guān)直至最后對(duì)最次位關(guān)鍵字排序完成為止鍵字排序完成為止。(組內(nèi)再排組內(nèi)再排)2.2.最高位優(yōu)先最高位優(yōu)先MSD法法90例如例如: :學(xué)生記錄含三個(gè)關(guān)鍵字學(xué)生記錄含三個(gè)關(guān)鍵字: :系別系別、班號(hào)班號(hào)和和班內(nèi)的班內(nèi)的序列號(hào),其中以序列號(hào),其中以系別為最主位關(guān)鍵字。系別為最主位關(guān)鍵字。 無序序列無序序列對(duì)對(duì)K0排序排序?qū)?duì)K1排序排序?qū)?duì)K2排序排序3,2,301,2,153,1,202,3,182,1,201,2,152,3,182,1,203,2,303,1,201,2,152,1,2

50、02,3,183,1,203,2,30 1,2,152,1,202,3,183,1,203,2,30MSD的排序過程如下的排序過程如下: :91 先對(duì)先對(duì) Kd-1 進(jìn)行排序進(jìn)行排序,然后對(duì)然后對(duì) Kd-2 進(jìn)行排序,依次類推,進(jìn)行排序,依次類推,直至對(duì)最主位關(guān)直至對(duì)最主位關(guān)鍵字鍵字 K0 排序完成為止排序完成為止。3.3.最低位優(yōu)先最低位優(yōu)先LSD法法92例如例如: :學(xué)生記錄含三個(gè)關(guān)鍵字學(xué)生記錄含三個(gè)關(guān)鍵字: :系別系別、班號(hào)班號(hào)和和班內(nèi)的班內(nèi)的序列號(hào),其中以序列號(hào),其中以系別為最主位關(guān)鍵字。系別為最主位關(guān)鍵字。 無序序列無序序列對(duì)對(duì)K2排序排序?qū)?duì)K1排序排序?qū)?duì)K0排序排序3,2,30

51、1,2,153,1,202,3,182,1,201,2,152,3,183,1,202,1,203,2,303,1,202,1,201,2,153,2,302,3,18 1,2,152,1,202,3,183,1,203,2,30LSD的排序過程如下的排序過程如下: :9310.6.2 鏈?zhǔn)交鶖?shù)排序鏈?zhǔn)交鶖?shù)排序1.1.算法思想算法思想 基數(shù)排序是按組成關(guān)鍵字的各位的值基數(shù)排序是按組成關(guān)鍵字的各位的值進(jìn)行進(jìn)行分配分配和和收集收集,與前面介紹的排序方法,與前面介紹的排序方法不同,它無需進(jìn)行關(guān)鍵字之間的比較。不同,它無需進(jìn)行關(guān)鍵字之間的比較。 設(shè)關(guān)鍵字有設(shè)關(guān)鍵字有d d 位,每位的取值范圍為位,每位

52、的取值范圍為 r(r(稱為基數(shù)稱為基數(shù)) ),則需要進(jìn)行,則需要進(jìn)行d d 趟分配與收趟分配與收集,需要設(shè)立集,需要設(shè)立r r個(gè)隊(duì)列。個(gè)隊(duì)列。例如例如,關(guān)鍵字是,關(guān)鍵字是4 4位字符串,需要位字符串,需要2626個(gè)隊(duì)個(gè)隊(duì)列,列,4 4趟分配與收集;關(guān)鍵字趟分配與收集;關(guān)鍵字3 3位十進(jìn)制數(shù),位十進(jìn)制數(shù),需要需要1010個(gè)隊(duì)列,個(gè)隊(duì)列,3 3趟分配與收集。趟分配與收集。94例如:例如:對(duì)下列這組關(guān)鍵字對(duì)下列這組關(guān)鍵字 278,109,063,930,589,184,505,269,008,083 (1)首先按其首先按其 “個(gè)位數(shù)個(gè)位數(shù)” 取值分別為取值分別為 0, 1, , 9 “分配分配” 成

53、成 10 組,之后按從組,之后按從 0 至至 9 的順序?qū)⒌捻樞驅(qū)?它們它們 “收集收集” 在一起在一起;(2)然后按其然后按其 “十位數(shù)十位數(shù)” 取值分別為取值分別為 0, 1, , 9 “分配分配” 成成 10 組,之后再按從組,之后再按從 0 至至 9 的順序?qū)⒌捻樞驅(qū)⑺鼈兯鼈?“收集收集” 在一起;在一起;(3)(3)最后按其最后按其“百位數(shù)百位數(shù)”重復(fù)一遍上述操作。重復(fù)一遍上述操作。95在計(jì)算機(jī)上實(shí)現(xiàn)基數(shù)排序時(shí),為減少在計(jì)算機(jī)上實(shí)現(xiàn)基數(shù)排序時(shí),為減少所需輔助存儲(chǔ)空間,應(yīng)采用鏈表作存儲(chǔ)結(jié)所需輔助存儲(chǔ)空間,應(yīng)采用鏈表作存儲(chǔ)結(jié)構(gòu)構(gòu),即鏈?zhǔn)交鶖?shù)排序,具體作法為:即鏈?zhǔn)交鶖?shù)排序,具體作法為:

54、待排序記錄以指針相鏈,構(gòu)成一個(gè)鏈表;待排序記錄以指針相鏈,構(gòu)成一個(gè)鏈表;“分配分配” 時(shí),按當(dāng)前時(shí),按當(dāng)前“關(guān)鍵字位關(guān)鍵字位”所取值,所取值,將記錄分配到不同的將記錄分配到不同的 “鏈隊(duì)列鏈隊(duì)列” 中,每個(gè)隊(duì)中,每個(gè)隊(duì)列中記錄的列中記錄的 “關(guān)鍵字位關(guān)鍵字位” 相同;相同;“收集收集”時(shí),按當(dāng)前關(guān)鍵字位取值從小到時(shí),按當(dāng)前關(guān)鍵字位取值從小到大將大將各隊(duì)列首尾相鏈成一個(gè)鏈表各隊(duì)列首尾相鏈成一個(gè)鏈表; ;對(duì)每個(gè)關(guān)鍵字位均重復(fù)對(duì)每個(gè)關(guān)鍵字位均重復(fù) 2) 和和 3) 兩步。兩步。96278109063930589184505269808083 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9

55、 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 278pp109p063p930p589p184p505p269p808p083930063083184505278808109589269 基數(shù)排序過程基數(shù)排序過程97基數(shù)排序過程基數(shù)排序過程930063083184505278808109589269 f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 083pp505p930pp808p278p109p184p505808109930063269278083184589 063p26958998基數(shù)排序過程基數(shù)排序過程505808109930063269278083184589f0 f1 f2 f3 f4 f5 f6 f7 f8 f9 e0 e1 e2 e3 e4 e5 e6 e7 e8 e9 109pp063p505pp278p269p083p930p06308310

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論