



付費下載
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、實用標準文檔一、插入排序(Insertion Sort)1. 基本思想:每次將一個待排序的數(shù)據(jù)元素,插入到前面已經(jīng)排好序的數(shù)列中的適當位置,使數(shù)列依然有序;直到待排序數(shù)據(jù)元素全部插入完為止。2. 排序過程:【示例】: 初始關(guān)鍵字 49 38 65 97 76 13 27 49J=2(38) 38 49 65 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)
2、 13 27 38 49 65 76 97 49J=8(49) 13 27 38 49 49 65 76 97Procedure InsertSort(Var R : FileType);/ 對 R1.N按遞增序進行插入排序, R0是監(jiān)視哨 /Beginfor I := 2 To N Do /依次插入 R2,.,Rn/beginR0:=R;J:=I-1;While R0 RJ Do /查找 R 的插入位置 /beginRJ+1 := RJ; /將大于 R的元素后移 /J:=J-1endRJ + 1 := R0 ; /插入 R /endEnd; /InsertSort /復制代碼文案大全實用標準
3、文檔二、選擇排序1. 基本思想:每一趟從待排序的數(shù)據(jù)元素中選出最小(或最大) 的一個元素, 順序放在已排好序的數(shù)列的最后,直到全部待排序的數(shù)據(jù)元素排完。2. 排序過程:【示例】:初始關(guān)鍵字 49 38 65 97 76 13 27 49第一趟排序后13 38 65 97 76 49 27 49第二趟排序后13 27 65 97 76 49 38 49第三趟排序后13 27 38 97 76 49 6549第四趟排序后13 27 38 49 49 97 6576第五趟排序后13 27 38 49 4997 9776第六趟排序后13 27 38 49 49767697第七趟排序后 13 27 38
4、 49 497676 97最后排序結(jié)果13 27 38 49 49767697Procedure SelectSort(Var R : FileType); /對 R1.N進行直接選擇排序/Beginfor I := 1 To N - 1 Do /做 N - 1 趟選擇排序 /beginK:=I;For J := I + 1 To N Do /在當前無序區(qū)RI.N中選最小的元素RK/beginIf RJ RK Then K := Jend;If K I Then /交換 R 和 RK /begin Temp := R; R := RK; RK := Temp; end;endEnd; /Sel
5、ectSort /復制代碼文案大全實用標準文檔三、冒泡排序(BubbleSort)1. 基本思想:兩兩比較待排序數(shù)據(jù)元素的大小,發(fā)現(xiàn)兩個數(shù)據(jù)元素的次序相反時即進行交換,直到?jīng)]有反序的數(shù)據(jù)元素為止。2. 排序過程:設(shè)想被排序的數(shù)組R 1.N 垂直豎立,將每個數(shù)據(jù)元素看作有重量的氣泡,根據(jù)輕氣泡不能在重氣泡之下的原則,從下往上掃描數(shù)組R,凡掃描到違反本原則的輕氣泡,就使其向上 漂浮 ,如此反復進行,直至最后任何兩個氣泡都是輕者在上,重者在下為止。【示例】:49 13 13 13 13 13 13 1338 49 27 27 27 27 27 2765 38 49 38 38 38 38 3897
6、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 97Procedure BubbleSort(Var R : FileType) /從下往上掃描的起泡排序/BeginFor I := 1 To N-1 Do /做 N-1 趟排序 /beginNoSwap := True; /置未排序的標志/For J := N - 1 DownTo 1 Do /從底部往上掃描/beginIf RJ+1= X) And (I J) Dobeg
7、inJ := J - 1 /從右向左掃描,查找第1個小于 X 的元素 /If I J Then /已找到 RJ X/beginR := RJ; /相當于交換R 和 RJ/I:=I+1end;While (R = X) And (I J) DoI := I + 1 /從左向右掃描,查找第1個大于 X 的元素 /end;If I X /beginRJ := R; /相當于交換R 和 RJ/J:=J-1endUntil I = J;R := X /基準 X 已被最終定位/End; /Parttion /復制代碼文案大全實用標準文檔Procedure QuickSort(Var R :FileType
8、; S,T: Integer); /對 RS.T 快速排序 /BeginIf S T Then /當 RS.T為空或只有一個元素是無需排序/beginPartion(R, S, T, I); /對 RS.T 做劃分 /QuickSort(R, S, I-1);/遞歸處理左區(qū)間RS,I-1/QuickSort(R, I+1,T);/遞歸處理右區(qū)間RI+1.T /end;End; /QuickSort/復制代碼五、堆排序 (Heap Sort)1. 基本思想:堆排序是一樹形選擇排序,在排序過程中,將R1.N看成是一顆完全二叉樹的順序存儲結(jié)構(gòu),利用完全二叉樹中雙親結(jié)點和孩子結(jié)點之間的內(nèi)在關(guān)系來選擇最
9、小的元素。2. 堆的定義 : N 個元素的序列 K1,K2,K3,.,Kn.稱為堆,當且僅當該序列滿足特性:Ki K2i Ki K2i+1(1 I N/2)堆實質(zhì)上是滿足如下性質(zhì)的完全二叉樹:樹中任一非葉子結(jié)點的關(guān)鍵字均大于等于其孩子結(jié)點的關(guān)鍵字。例如序列10,15,56,25,30,70就是一個堆,它對應的完全二叉樹如上圖所示。這種堆中根結(jié)點(稱為堆頂)的關(guān)鍵字最小,我們把它稱為小根堆。反之,若完全二叉樹中任一非葉子結(jié)點的關(guān)鍵字均大于等于其孩子的關(guān)鍵字,則稱之為大根堆。3. 排序過程:堆排序正是利用小根堆(或大根堆)來選取當前無序區(qū)中關(guān)鍵字小(或最大)的記錄實現(xiàn)排序的。 我們不妨利用大根堆來
10、排序。每一趟排序的基本操作是:將當前無序區(qū)調(diào)整為一個大根堆, 選取關(guān)鍵字最大的堆頂記錄,將它和無序區(qū)中的最后一個記錄交換。這樣, 正好和直接選擇排序相反,有序區(qū)是在原記錄區(qū)的尾部形成并逐步向前擴大到整個記錄區(qū)。【示例】:對關(guān)鍵字序列42,13, 91,23, 24,16, 05, 88建堆文案大全實用標準文檔Procedure Sift(Var R :FileType; I, M : Integer);/ 在數(shù)組 RI.M 中調(diào)用 R,使得以它為完全二叉樹構(gòu)成堆。 事先已知其左、 右子樹(2I+1 =M 時 ) 均是堆 /BeginX := R; J := 2*I; /若 J =M, RJ是
11、R 的左孩子 /While J = M Do /若當前被調(diào)整結(jié)點R 有左孩子RJ/beginIf (J M) And RJ.Key RJ+1.Key ThenJ := J + 1 /令 J 指向關(guān)鍵字較大的右孩子/J指向 R的左、右孩子中關(guān)鍵字較大者/If X.Key RJ.Key Then /孩子結(jié)點關(guān)鍵字較大/beginR := RJ; /將 RJ 換到雙親位置上/I := J ; J := 2*I /繼續(xù)以 RJ 為當前被調(diào)整結(jié)點往下層調(diào)整/end;ElseExit/調(diào)整完畢,退出循環(huán)/endR := X;/將最初被調(diào)整的結(jié)點放入正確位置/End;/Sift/復制代碼Procedure
12、HeapSort(Var R : FileType); /對 R1.N進行堆排序 /BeginFor I := N Div Downto 1 Do /建立初始堆 /Sift(R, I , N)For I := N Downto 2 do /進行 N-1趟排序 /beginT := R1; R1 := R; R := T;/將當前堆頂記錄和堆中最后一個記錄交換/Sift(R, 1, I-1) /將 R1.I-1重成堆 /endEnd; /HeapSort/復制代碼文案大全實用標準文檔六、幾種排序算法的比較和選擇1. 選取排序方法需要考慮的因素:(1) 待排序的元素數(shù)目 n;(2) 元素本身信息量的大小;(3) 關(guān)鍵字的結(jié)構(gòu)及其分布情況;(4) 語言工具的條件,輔助空間的大小等。2. 小結(jié):(1) 若 n 較小 (n = 50) ,則可以采用直接插入排序或直接選擇排序。由于直接插入排序所需的記錄移動操作較直接選擇排序多, 因而當記錄本身信息量較大時, 用直接選擇排序較好。(2) 若文件的初始狀態(tài)已按關(guān)鍵字基本有序,則選用直接插入或冒泡排序為宜。(3) 若 n 較大,則應采用時間復雜度為O(nlog2n) 的排序方法:快速排序、堆排序或歸并排序。快速排序是目前基于比較的內(nèi)部排序法中被認為是最好的方法
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 格力公司公關(guān)策劃方案
- 梵凈山旅游管理活動方案
- 汽車之家線下活動方案
- 愛心捐款主題班會課件
- 愛心家園主題班會課件
- 作業(yè)成本法下的企業(yè)生產(chǎn)成本控制策略探究
- 網(wǎng)點指示牌服務(wù)設(shè)計方案
- 母親視角下的家庭情感與社會變遷研究
- 爆破單位安全課件
- 仙居傳統(tǒng)調(diào)味品抗氧化性能探究
- 中國IBD藍皮書-中國炎癥性腸病醫(yī)患認知暨生存質(zhì)量報告:克羅恩病部分
- 2025至2030中國電動踏板車行業(yè)項目調(diào)研及市場前景預測評估報告
- 中國公安信息化市場前景預測及未來發(fā)展趨勢報告
- 專精特新企業(yè)課件
- 四川省南充市四校聯(lián)考2025年英語八下期末質(zhì)量檢測試題含答案
- JJG 621-2012 液壓千斤頂行業(yè)標準
- 旅游開發(fā)公司組織架構(gòu)
- 上期開特下期出特公式
- 杭州市普通住宅物業(yè)菜單式服務(wù)參考收費標準(試行)
- 鋼材標準-SAEAMS5662M-2004鎳基高溫合金[1]._pdf
- 建筑工程內(nèi)外墻面噴漿、粘釘、掛網(wǎng)施工合同(共2頁)
評論
0/150
提交評論