排序算法的時間復雜度和空間復雜度_第1頁
排序算法的時間復雜度和空間復雜度_第2頁
排序算法的時間復雜度和空間復雜度_第3頁
排序算法的時間復雜度和空間復雜度_第4頁
排序算法的時間復雜度和空間復雜度_第5頁
已閱讀5頁,還剩1頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、排序算法的時間復雜度和空間復雜度常用的內部排序方法有:交換排序(冒泡排序、快速排序)、選擇排序(簡單選擇排序、堆排序)、插入排 序(直接插入排序、希爾排序)、歸并排序、基數排序(一關鍵字、多關鍵字)。一、冒泡排序:基本思想:兩兩比較待排序數據元素的大小,發現兩個數據元素的次序相反時即進行交換,直到沒有反序的數據元素 為止。排序過程:設想被排序的數組R 1.N垂直豎立,將每個數據元素看作有重量的氣泡,根據輕氣泡不能在重氣泡之 下的原則,從下往上掃描數組R,凡掃描到違反本原則的輕氣泡,就使其向上漂浮,如此反復進行,直 至最后任何兩個氣泡都是輕者在上,重者在下為止。【示例】:49 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)基本思想:在當前無序區R1.H中任取一個數據元素作為比較的基準(不妨記為X),用此基準將當前無序區劃分為左 右兩個較小的無序區:R1.I-1 和RI+1.H,且左邊的無序子區中數據元素均小于等于基準元素,右邊的無 序子區

3、中數據元素均大于等于基準元素,而基準 X則位于最終排序的位置上,即 R1.I-1 WX.KeyW RI+1.H(1WIWH),當R1.I-1 和RI+1.H均非空時,分別對它們進行上述的劃分過程,直至所有無序子區 中的數據元素均已排序為止。排序過程:【示例】:初始關鍵字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(一次劃分過程)初始關鍵字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最后的排序結果13 27 38 49 49 65 76 97三、簡單選擇排序基本思想:每一趟從待排序的數據元素中選出最小(或最大)的一個元素,順序放在已排好序的數列的最后,直到全 部待排序的數據元素排完。排序過程:【示例】:初始關鍵字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最后排序結果13 27 38 49 49 76 76 97四、堆排序(Heap Sort)基本思想:堆排序是一樹形選擇排序,在排序過程中,將R1.N看成是一顆完全二叉樹的順序存儲結構,利用完全二 叉樹中雙親結點和孩

6、子結點之間的內在關系來選擇最小的元素。堆的定義:N個元素的序列K1,K2,K3,.,Kn.稱為堆,當且僅當該序列滿足特性:KiWK2i Ki WK2i+1(1W IW N/2)堆實質上是滿足如下性質的完全二叉樹:樹中任一非葉子結點的關鍵字均大于等于其孩子結點的關鍵字。 例如序列10,15,56,25,30,70就是一個堆,它對應的完全二叉樹如上圖所示。這種堆中根結點(稱為堆頂) 的關鍵字最小,我們把它稱為小根堆。反之,若完全二叉樹中任一非葉子結點的關鍵字均大于等于其孩子 的關鍵字,則稱之為大根堆。排序過程:堆排序正是利用小根堆(或大根堆)來選取當前無序區中關鍵字小(或最大)的記錄實現排序的。我

7、們不 妨利用大根堆來排序。每一趟排序的基本操作是:將當前無序區調整為一個大根堆,選取關鍵字最大的堆 頂記錄,將它和無序區中的最后一個記錄交換。這樣,正好和直接選擇排序相反,有序區是在原記錄區的 尾部形成并逐步向前擴大到整個記錄區?!臼纠浚簩﹃P鍵字序列42,13,91,23,24,16,05,88建堆五、直接插入排序(Insertion Sort)1. 基本思想: 每次將一個待排序的數據元素,插入到前面已經排好序的數列中的適當位置,使數列依然有序;直到待排 序數據元素全部插入完為止。2.排序過程:【示例】:初始關鍵字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六、希爾排序排序思想:先取一個小于n的證書d1作為第一個增量,把文件的全部記錄分成d1組。所有距離為d1的倍數的記錄 放在同一組中。先在各組內進行直接插入排序,然后取第二個增量d2d1重復上述的分組

9、和排序,直到所 取的增量dt=1,即所有記錄放在同一組中進行直接插入排序為止。該方法實際上是一種分組插入方法。排序過程:初始關鍵字 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七、歸并排序排序思想:設兩個有序的子文件(相當于輸入堆)放在同一向量中相鄰的位置上:Rlow.m,Rm+1.high,先將它們合 并到一個局部的暫存向量R1(相當于輸出堆)中,待合并完

10、成后將R1復制回Rlow.high中。排序過程:【示例】:初始關鍵字46385630888038第一趟歸并后38 4630 5680 8838第二趟歸并后30 38 46 5638 80 88最終歸并結果30 38 38 46 56 80 88八、基數排序排序思想:根據數據項個位上的值,把所有的數據項分為10組;然后對這10組數據重新排列:把所有以0結尾的數據排在最前面,然后是結尾是1的數據項,照此 順序直到以9結尾的數據,這個步驟稱為第一趟子排序;在第二趟子排序中,再次把所有的數據項分為10組,但是這一次是根據數據項十位上的值來分組的。 這次分組不能改變先前的排序順序。也就是說,第二趟排序之

11、后,從每一組數據項的內部來看,數據項的 順序保持不變;然后再把10組數據項重新合并,排在最前面的是十位上為0的數據項,然后是10位為1的數據項, 如此排序直到十位上為9的數據項。對剩余位重復這個過程,如果某些數據項的位數少于其他數據項,那么認為它們的高位為0。排序過程【示例】初始關鍵字 421 240 035 532 305 430 124第一趟排序后240 430 421 532 124 035 305第二趟排序后(305) (421 124) (430 532 035) (240)最后排序結果(035) (124) (240) (305) (421 430) (532)時間復雜度排序方法最好情況最壞情況平均情況穩定性空間復雜度冒泡排序O(n)O(n2)O(n2)穩定快速排序O(nlogn)O(n2)O(nlogn)不穩定簡單選擇排序O(n2)不穩定堆排序O(nlogn)不穩定直接插入排序O(n)O(n2)O(n2)穩定希爾排序O(n1.3)不穩定歸并排序O(nlogn)O(nlogn)O(nlogn)穩定基數排序O(d(r+n)穩定(1)選擇排序最好是O(n2)(2)快速排序在平均情況

溫馨提示

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

評論

0/150

提交評論