




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、排序算法的時(shí)間復(fù)雜度和空間復(fù)雜度常用的內(nèi)部排序方法有:交換排序(冒泡排序、快速排序)、選擇排序(簡(jiǎn)單選擇排序、堆排序)、插入排 序(直接插入排序、希爾排序)、歸并排序、基數(shù)排序(一關(guān)鍵字、多關(guān)鍵字)。一、冒泡排序:基本思想:兩兩比較待排序數(shù)據(jù)元素的大小,發(fā)現(xiàn)兩個(gè)數(shù)據(jù)元素的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的數(shù)據(jù)元素 為止。排序過程:設(shè)想被排序的數(shù)組R 1.N垂直豎立,將每個(gè)數(shù)據(jù)元素看作有重量的氣泡,根據(jù)輕氣泡不能在重氣泡之 下的原則,從下往上掃描數(shù)組R,凡掃描到違反本原則的輕氣泡,就使其向上漂浮,如此反復(fù)進(jìn)行,直 至最后任何兩個(gè)氣泡都是輕者在上,重者在下為止?!臼纠浚?9 13 13 13
2、13 13 13 1338 49 27 27 27 27 27 2765 38 49 38 38 38 38 3897 65 38 49 49 49 49 4976 97 65 49 49 49 49 4913 76 97 65 65 65 65 6527 27 76 97 76 76 76 7649 49 49 76 97 97 97 97二、快速排序(Quick Sort)基本思想:在當(dāng)前無序區(qū)R1.H中任取一個(gè)數(shù)據(jù)元素作為比較的基準(zhǔn)(不妨記為X),用此基準(zhǔn)將當(dāng)前無序區(qū)劃分為左 右兩個(gè)較小的無序區(qū):R1.I-1 和RI+1.H,且左邊的無序子區(qū)中數(shù)據(jù)元素均小于等于基準(zhǔn)元素,右邊的無 序子區(qū)
3、中數(shù)據(jù)元素均大于等于基準(zhǔn)元素,而基準(zhǔn) X則位于最終排序的位置上,即 R1.I-1 WX.KeyW RI+1.H(1WIWH),當(dāng)R1.I-1 和RI+1.H均非空時(shí),分別對(duì)它們進(jìn)行上述的劃分過程,直至所有無序子區(qū) 中的數(shù)據(jù)元素均已排序?yàn)橹埂E判蜻^程:【示例】:初始關(guān)鍵字49 38 65 97 76 13 27 49第一次交換后27 38 65 97 76 13 49 49第二次交換后27 38 49 97 76 13 65 49J向左掃描,位置不變,第三次交換后27 38 13 97 76 49 65 49I向右掃描,位置不變,第四次交換后27 38 13 49 76 97 65 49J 向左
4、掃描27 38 13 49 76 97 65 49(一次劃分過程)初始關(guān)鍵字49 38 65 97 76 13 27 49一趟排序之后27 38 13 49 76 97 65 49二趟排序之后13 27 38 49 49 65 76 97三趟排序之后13 27 38 49 49 65 76 97最后的排序結(jié)果13 27 38 49 49 65 76 97三、簡(jiǎn)單選擇排序基本思想:每一趟從待排序的數(shù)據(jù)元素中選出最?。ɑ蜃畲螅┑囊粋€(gè)元素,順序放在已排好序的數(shù)列的最后,直到全 部待排序的數(shù)據(jù)元素排完。排序過程:【示例】:初始關(guān)鍵字49 38 65 97 76 13 27 49第一趟排序后 13 38
5、 65 97 76 49 27 49第二趟排序后 13 27 65 97 76 49 38 49第三趟排序后13 27 38 97 76 49 65 49第四趟排序后13 27 38 49 49 97 65 76第五趟排序后13 27 38 49 49 97 97 76第六趟排序后13 27 38 49 49 76 76 97第七趟排序后13 27 38 49 49 76 76 97最后排序結(jié)果13 27 38 49 49 76 76 97四、堆排序(Heap Sort)基本思想:堆排序是一樹形選擇排序,在排序過程中,將R1.N看成是一顆完全二叉樹的順序存儲(chǔ)結(jié)構(gòu),利用完全二 叉樹中雙親結(jié)點(diǎn)和孩
6、子結(jié)點(diǎn)之間的內(nèi)在關(guān)系來選擇最小的元素。堆的定義:N個(gè)元素的序列K1,K2,K3,.,Kn.稱為堆,當(dāng)且僅當(dāng)該序列滿足特性:KiWK2i Ki WK2i+1(1W IW N/2)堆實(shí)質(zhì)上是滿足如下性質(zhì)的完全二叉樹:樹中任一非葉子結(jié)點(diǎn)的關(guān)鍵字均大于等于其孩子結(jié)點(diǎn)的關(guān)鍵字。 例如序列10,15,56,25,30,70就是一個(gè)堆,它對(duì)應(yīng)的完全二叉樹如上圖所示。這種堆中根結(jié)點(diǎn)(稱為堆頂) 的關(guān)鍵字最小,我們把它稱為小根堆。反之,若完全二叉樹中任一非葉子結(jié)點(diǎn)的關(guān)鍵字均大于等于其孩子 的關(guān)鍵字,則稱之為大根堆。排序過程:堆排序正是利用小根堆(或大根堆)來選取當(dāng)前無序區(qū)中關(guān)鍵字小(或最大)的記錄實(shí)現(xiàn)排序的。我
7、們不 妨利用大根堆來排序。每一趟排序的基本操作是:將當(dāng)前無序區(qū)調(diào)整為一個(gè)大根堆,選取關(guān)鍵字最大的堆 頂記錄,將它和無序區(qū)中的最后一個(gè)記錄交換。這樣,正好和直接選擇排序相反,有序區(qū)是在原記錄區(qū)的 尾部形成并逐步向前擴(kuò)大到整個(gè)記錄區(qū)?!臼纠浚簩?duì)關(guān)鍵字序列42,13,91,23,24,16,05,88建堆五、直接插入排序(Insertion Sort)1. 基本思想: 每次將一個(gè)待排序的數(shù)據(jù)元素,插入到前面已經(jīng)排好序的數(shù)列中的適當(dāng)位置,使數(shù)列依然有序;直到待排 序數(shù)據(jù)元素全部插入完為止。2.排序過程:【示例】:初始關(guān)鍵字49 38 65 97 76 13 27 49J=2(38) 38 49 65
8、 97 76 13 27 49J=3(65) 38 49 65 97 76 13 27 49J=4(97) 38 49 65 97 76 13 27 49J=5(76) 38 49 65 76 97 13 27 49J=6(13) 13 38 49 65 76 97 27 49J=7(27) 13 27 38 49 65 76 97 49J=8(49) 13 27 38 49 49 65 76 97六、希爾排序排序思想:先取一個(gè)小于n的證書d1作為第一個(gè)增量,把文件的全部記錄分成d1組。所有距離為d1的倍數(shù)的記錄 放在同一組中。先在各組內(nèi)進(jìn)行直接插入排序,然后取第二個(gè)增量d2d1重復(fù)上述的分組
9、和排序,直到所 取的增量dt=1,即所有記錄放在同一組中進(jìn)行直接插入排序?yàn)橹?。該方法?shí)際上是一種分組插入方法。排序過程:初始關(guān)鍵字 72 28 51 17 96 62 87 33 45 24d1=n/2=562 28 33 17 24 72 87 51 45 96d2=d1/2=317 24 33 62 28 45 87 51 72 96d3=d2/2=117 24 28 33 45 51 62 72 87 96七、歸并排序排序思想:設(shè)兩個(gè)有序的子文件(相當(dāng)于輸入堆)放在同一向量中相鄰的位置上:Rlow.m,Rm+1.high,先將它們合 并到一個(gè)局部的暫存向量R1(相當(dāng)于輸出堆)中,待合并完
10、成后將R1復(fù)制回Rlow.high中。排序過程:【示例】:初始關(guān)鍵字46385630888038第一趟歸并后38 4630 5680 8838第二趟歸并后30 38 46 5638 80 88最終歸并結(jié)果30 38 38 46 56 80 88八、基數(shù)排序排序思想:根據(jù)數(shù)據(jù)項(xiàng)個(gè)位上的值,把所有的數(shù)據(jù)項(xiàng)分為10組;然后對(duì)這10組數(shù)據(jù)重新排列:把所有以0結(jié)尾的數(shù)據(jù)排在最前面,然后是結(jié)尾是1的數(shù)據(jù)項(xiàng),照此 順序直到以9結(jié)尾的數(shù)據(jù),這個(gè)步驟稱為第一趟子排序;在第二趟子排序中,再次把所有的數(shù)據(jù)項(xiàng)分為10組,但是這一次是根據(jù)數(shù)據(jù)項(xiàng)十位上的值來分組的。 這次分組不能改變先前的排序順序。也就是說,第二趟排序之
11、后,從每一組數(shù)據(jù)項(xiàng)的內(nèi)部來看,數(shù)據(jù)項(xiàng)的 順序保持不變;然后再把10組數(shù)據(jù)項(xiàng)重新合并,排在最前面的是十位上為0的數(shù)據(jù)項(xiàng),然后是10位為1的數(shù)據(jù)項(xiàng), 如此排序直到十位上為9的數(shù)據(jù)項(xiàng)。對(duì)剩余位重復(fù)這個(gè)過程,如果某些數(shù)據(jù)項(xiàng)的位數(shù)少于其他數(shù)據(jù)項(xiàng),那么認(rèn)為它們的高位為0。排序過程【示例】初始關(guān)鍵字 421 240 035 532 305 430 124第一趟排序后240 430 421 532 124 035 305第二趟排序后(305) (421 124) (430 532 035) (240)最后排序結(jié)果(035) (124) (240) (305) (421 430) (532)時(shí)間復(fù)雜度排序方法最好情況最壞情況平均情況穩(wěn)定性空間復(fù)雜度冒泡排序O(n)O(n2)O(n2)穩(wěn)定快速排序O(nlogn)O(n2)O(nlogn)不穩(wěn)定簡(jiǎn)單選擇排序O(n2)不穩(wěn)定堆排序O(nlogn)不穩(wěn)定直接插入排序O(n)O(n2)O(n2)穩(wěn)定希爾排序O(n1.3)不穩(wěn)定歸并排序O(nlogn)O(nlogn)O(nlogn)穩(wěn)定基數(shù)排序O(d(r+n)穩(wěn)定(1)選擇排序最好是O(n2)(2)快速排序在平均情況
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 廢氣廢氣在線運(yùn)維規(guī)定合同
- 智慧酒店運(yùn)營(yíng)投資合同
- 住宅樓房地產(chǎn)買賣合同
- 活動(dòng)場(chǎng)地租用合同
- 服務(wù)合同尾款協(xié)議
- 汽車臨時(shí)出租合同協(xié)議書
- 合同不執(zhí)行協(xié)議書怎么寫
- 銷售辦公桌合同協(xié)議
- 租電合同協(xié)議
- 人工協(xié)議合同
- 醫(yī)院護(hù)理核心工作制度的執(zhí)行效果評(píng)價(jià)
- 中建滑模專項(xiàng)施工方案
- 設(shè)備安裝檢驗(yàn)批質(zhì)量驗(yàn)收記錄08010101
- 《OutLook常規(guī)使用》課件
- 醫(yī)院膀胱鏡科室管理制度
- 2023年海南省??谑忻捞m區(qū)六年級(jí)數(shù)學(xué)第二學(xué)期期末質(zhì)量檢測(cè)試題含解析
- 銷售問題與二元一次方程組
- 各類酒店造價(jià)估算指標(biāo)
- 2023年民兵整組存在的問題
- 單基因遺傳病的分子生物學(xué)檢驗(yàn)-醫(yī)學(xué)院課件
- 公務(wù)攝影拍攝技巧分享課件
評(píng)論
0/150
提交評(píng)論