版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、是行動的先排教學目的:是介紹五排序方法排序算法時間是行動的先排教學目的:是介紹五排序方法排序算法時間和基性能的各種排序方法的比較和選擇教學重點:要求在熟悉這些內容的基礎上,重握排序、選擇排序、交換排序、分配排序歸并排序的基及教學難點:序和分配排序這四個排序算法的實現(xiàn)。3內容提排序的基本概排選擇內容提排序的基本概排選擇排交換排分配排歸并排4排序的基本概假設條件假定排序的對象是由一組組成的文件,由干字段組排序的基本概假設條件假定排序的對象是由一組組成的文件,由干字段組成,以排序碼為依據(jù)排排序碼中的一個(或多個)字關鍵碼-此時按關鍵碼排不是關鍵碼-則可能有多個具有相同的排序碼,排排序碼的類型可以是整
2、數(shù)類型,也可以是字符類本章假設排序碼為整型5排排序:設R0,R1,Rn-1是由n排排序:設R0,R1,Rn-1是由nK0,K1,Kn-1是排序碼集合,排序是按排序碼遞增(或非遞減)的次序排對應的排序碼序列為 K0,K1,Kn-1其中K0K1 Kn-1,稱為或K0K1 Kn-1,稱為6vs.“正序”序列 :待排序序列正好vs.“正序”序列 :待排序序列正好符合排序要“逆序”序:把待排序序列逆轉過來,正好符合排序求例如,要求非遞排序的穩(wěn)定排序的穩(wěn)定與不穩(wěn)定:在待排序的文件中,如排序的穩(wěn)定排序的穩(wěn)定與不穩(wěn)定:在待排序的文件中,如果存在多排序碼相同,經(jīng)過排序的相對次序保持不變,則這種排法稱為是“穩(wěn)定的
3、8排序的種按排序中涉及器不同排序是把待排數(shù)據(jù)排序的種按排序中涉及器不同排序是把待排數(shù)據(jù)元素全部調入內存中進行的序外部排序是因數(shù)量太大,把數(shù)據(jù)元素分批導入內存排好序后再分批導出到磁盤和磁帶外存介質上的排序的已排序序列長一趟排9已排序序列待排序列已排序序列待排序序列按排序方法分類、選擇類、交換類、歸并類類:每一趟將無序序列區(qū)一個或幾個待排序,按其排序碼大小”到已排序序列選擇類序列中“選擇”按排序方法分類、選擇類、交換類、歸并類類:每一趟將無序序列區(qū)一個或幾個待排序,按其排序碼大小”到已排序序列選擇類序列中“選擇”大加入到已排序序列交換類:兩兩比較待排序的排序碼,“交換”不滿足序要求的偶對,從而得到
4、其中排序碼最大或最小的,歸并類:通過“歸并”兩個或兩個以增已排序(有序)一趟排已排序序列待排序列已排序序列待排序序列按排序方法分選擇排、二按排序方法分選擇排、二分、排起泡排序、快速排二路歸并排排序的基本操比較兩個排序的基本操比較兩個關鍵字的大小(必須將一從一個位置移動到另一個位置(不必須,可通方式來避排序算法的評評價排序算法好排序算法的評評價排序算法好關鍵字的比較次數(shù)和算法本身的復雜程度也是考慮的一估算,所以,在應用時要根據(jù)情況計算實際的開銷,選擇合適的算法執(zhí)行排序算法所需的附內容提排序的基本概排選內容提排序的基本概排選擇排交換排分配排歸并排排排序的基本方法每一趟將待排序序列區(qū)一個或排排序的基
5、本方法每一趟將待排序序列區(qū)一個或幾個待排序直”到前面已經(jīng)排序的文件中的適排表s排排排表S排表S示例如,n=6,數(shù)組R的六個排序碼分別20,9。它的直排序的執(zhí)行過。第 次第 次第 次92ang012345第 次3第 次示例如,n=6,數(shù)組R的六個排序碼分別20,9。它的直排序的執(zhí)行過。第 次第 次第 次92ang012345第 次3第 次直排方法R0,Ri-1 和Ri直排方法R0,Ri-1 和Ri,Rn-其中,前一個子區(qū)間已經(jīng)排好序當前未排序,K0直排序的算直排序的算法的數(shù)據(jù)結typedef/* 排序碼字段 KeyType直排序的算直排序的算法的數(shù)據(jù)結typedef/* 排序碼字段 KeyTyp
6、e的其他字段 typedef struct/*n個數(shù),nMAXNUMRecordNode直排序的算法流程 j!=i-YNA直排序的算法流程 j!=i-YNAYY將關鍵碼比temp大的NA后移voidinsertSort(SortObject */* 按非遞減序進行直i,RecordNodevoidinsertSort(SortObject */* 按非遞減序進行直i,RecordNode排序for( i=1; in; i+ /*依Rn-temp = pvector-recordi; /把待排序元素賦給 temp j = i-1;while(temp.key recordj.key)&(j=0)
7、 /*由后向前位置后移if(j!=(i-1)pvector-recordj+1=排序算法直voidinsertSort(SortObject *pvector) 排序算法直voidinsertSort(SortObject *pvector) /待排序元素存于數(shù)組record ,數(shù)據(jù)從record1起record0有特別用處pvector-record0=pvector-recordi; j = i-1;/把待排序元素暫存于 pvector-recordj+1=pvector-R0的作用:暫存Ri;監(jiān)視是否R0的作用:暫存Ri;監(jiān)視是否算法中引進的附record0稱監(jiān)視哨或哨(Sentinel
8、)它的主要作用是:在查找循環(huán)中監(jiān)視下標變量j是否越界。一旦越界即),因為rd0ke和自己比較,循環(huán)判定條件不成立使得查找循環(huán)結束,從而避免了在該循環(huán)內的每一次均要檢測j是否越界(即省略了循環(huán)判定條件j。引入哨兵后使得測試查,所以對數(shù)較大的文件節(jié)約的時間就相當可觀排序算法評價直在已經(jīng)排好序的iR0Ri-1第i+1的位置上其比較次數(shù)Ci最排序算法評價直在已經(jīng)排好序的iR0Ri-1第i+1的位置上其比較次數(shù)Ci最多為i次,Ri被排在第一(KiK0);最少為一次,此時Ri的位置不變(KiKi-最小比較次數(shù)每最大比較次數(shù)每 n1 比較已排好序長n i2i 1 n(2n 1)C2直排序算法評價為了一個所需
9、移動的次數(shù)為mi,其最大值為Ci+1,最小直排序算法評價為了一個所需移動的次數(shù)為mi,其最大值為Ci+1,最小值為1(包括算法中最小移temp的移動次 n 1 M最大移動次數(shù)n 2n(i 1) M2i 排序算法評價直文件初態(tài)不同時,直接排序所耗費的排序算法評價直文件初態(tài)不同時,直接排序所耗費的時間有很若文件初態(tài)為正序,則算法的時間復雜度為若初態(tài)為逆序,則時間復雜度為Ri-1,有i種可能的到第位置,即1,i-1位置上,假設每種情況發(fā)生的概率是相等均1pji排序算法評價直比較次數(shù)為Cj=j+1(j=0,i-2,i-2),則的平均比較次數(shù)Ri-i i i i21j 1) P j (j排序算法評價直比
10、較次數(shù)為Cj=j+1(j=0,i-2,i-2),則的平均比較次數(shù)Ri-i i i i21j 1) P j (jij j 01i 2 (j1i1ij 1i1( 1 2i2排序算法評價直直排序的總的比較次數(shù)1 l22排序算法評價直直排序的總的比較次數(shù)1 l22ln1 1l2ln1 1(n2n12 44)4 O(n2排序算法評價直從時間分析首先外層排序算法評價直從時間分析首先外層循環(huán)要進行n-1,每最少比較一次(正序),移動一次最多比較i次,移動i1次(逆序,n-因此,直排序的時間復雜度為O(n2)直算法的元素移動是順序的,該方法是穩(wěn)定的二分排排序的算法簡潔,容易實現(xiàn)直較小時是一二分排排序的算法簡潔
11、,容易實現(xiàn)直較小時是一好的排序方的數(shù)量都很大,則此時直排序方Ri在直排序的基礎上減少比較的次數(shù),即改用二分法比較位置,便得到二分排排表S排表S二分排所謂二分法比較,的排已排序R與Ki+1進行比i22(x表示取不大于x的最大整數(shù)二分排所謂二分法比較,的排已排序R與Ki+1進行比i22(x表示取不大于x的最大整數(shù)到如果R只能插在,0i22R之間繼續(xù)使用二則在R i10否則2到Ri之間使12如此反復直到位置為經(jīng)過一次比較,便可排除,故稱二示初始序列為38, 97, 示初始序列為38, 97, 76, 13, 27, 49,用二采用二分法排序經(jīng)過6趟排序后,序列的前7個元素組成一個有序序列,下面是第7
12、示例(1)1327 38 49 65 76 97 left=0 mid=3 right=6 (2)13示例(1)1327 38 49 65 76 97 left=0 mid=3 right=6 (2)1327 38 49 65 76 9749(3)13273849657697left=4 mid=4 49right結束,left、right的修改原則是pvector-recordmid.key,保證排序是穩(wěn)定的排表S排表S表排序是在:排排序的基礎上減少移動的次數(shù)在中設置表排序是在:排排序的基礎上減少移動的次數(shù)在中設置一個指針字段用鏈表連Ri時,R0至Ri-1已經(jīng)排序,先將Ri鏈再采用順序比較的
13、方法找到Ri的位置,將鏈例題例題初始序列為27, 49,用初例題例題初始序列為27, 49,用初始鏈排序法第23849 例第3第例第3第4第5例第6第例第6第7第8排序的算表算法的數(shù)據(jù)結struct Node; typedefstructN struct Node單鏈表KeyType排序的算表算法的數(shù)據(jù)結struct Node; typedefstructN struct Node單鏈表KeyType/*排序碼的其它字ypeinfo;ListNodetypedefListNode*表排序的算法性能分第i趟排序:最多比較次數(shù)i次,最少比表排序的算法性能分第i趟排序:最多比較次數(shù)i次,最少比較次數(shù)
14、1次n-1nn(n i 2in-移動次時間效率指針排表S排表SsS排序法又稱縮小增量法,由在1959年提出,是對直:排序法的改直接排序中,sS排序法又稱縮小增量法,由在1959年提出,是對直:排序法的改直接排序中,當初始序列為逆序時,時間效率最差。若初始序列基本有序時,則大多數(shù)不需要插入,時間效率大大提高另外數(shù)n較小時,n2值受n的值排序正是從這兩個方面考慮對直排序進S改進基本方先取一個整數(shù)分成d1個組,所有距離把全部為d1倍數(shù)放在一組中然后取d2d1重復上述分組和排序工基本方先取一個整數(shù)分成d1個組,所有距離把全部為d1倍數(shù)放在一組中然后取d2d1重復上述分組和排序工直到di=1放在一組中為
15、各組內的排序可以采用直法,也可以采用的其它排序方法,如直接選擇排d1 n,2 對于增量的選擇提i 2 d 3示例-示例-sS排序算法的速度比直接排序快,其時間復雜sS排序算法的速度比直接排序快,其時間復雜度分析比較復雜,S排序的平均比較次數(shù)和平均移動次S排序算法中增加了一個輔助空間temp輔助空間為S排序是不穩(wěn)定排序小除外,其它排序的時間復雜度為O(n2),并是穩(wěn)定的。所有排序都首先確定位置。排序小除外,其它排序的時間復雜度為O(n2),并是穩(wěn)定的。所有排序都首先確定位置。排序簡單,容易實現(xiàn),但當n發(fā)對直排序進行改進直接順序檢索確定位移動實;折半減少比較次數(shù)(折半檢索確定位置現(xiàn)表:減少移動次數(shù)
16、(采用鏈,順序檢索確定置,指針修改代移動完S排序效率大大提高),不穩(wěn)定內容提排序的基本概排選內容提排序的基本概排選擇排交換排分配排歸并排選擇排序列中選擇關鍵字小放置到已排序表的最前位置,直到全關鍵問題序列中找到最選擇排序列中選擇關鍵字小放置到已排序表的最前位置,直到全關鍵問題序列中找到最關鍵方法。直接選擇排方法首先在所有交然后在其余的中選出排序碼最小,與第一個中再選出排序碼最小與直接選擇排方法首先在所有交然后在其余的中選出排序碼最小,與第一個中再選出排序碼最小與第個交以此類推,直到所排好8le-直接選擇排le-直接選擇排直接選擇排序性能分錄需要n-i直接選擇排序性能分錄需要n-i次比的初始狀態(tài)
17、無關開始,順序比較選擇最小關鍵碼總的比n (n 1n (i2(初始為正序時(初始為逆序時,每趟1次i 移動次數(shù)=最多移動次數(shù):Mmax 3(n-換,3次移動完成時間復雜不穩(wěn)定的排序內容提排序的基本概排選內容提排序的基本概排選擇排交換排分配排歸并排交換排交換排序的基本兩兩比交換排交換排序的基本兩兩比較待排的排序碼,交換不滿足順序求的偶對,從而得到其中排序碼最大或最小,快速排起泡排方先將序列中的第R 與第二R1比較起泡排方先將序列中的第R 與第二R1比較R1與第三R2作同樣和第n依次類推,直到處理完第n-1從(R0,R1)到(Rn-2,Rn-1)的n-1為一次起中最大者被安置在第n個起泡排序方此后
18、,再對前n-1進行同樣處理,使n-1的最大者被安置在整個序列的第n-1個位置上然后再對前n-2重復上述過程起泡排序方此后,再對前n-1進行同樣處理,使n-1的最大者被安置在整個序列的第n-1個位置上然后再對前n-2重復上述過程,這樣最多n-1次起泡就能完成排可以設置一個標志noswap表示本次起泡是否有起泡排序是通過相大逐步從前(上)向后(下)移,值較逐從后下向前上移,就像水底的氣泡一樣向上冒,故稱為起泡排序冒泡排序過49,38,65,97,76,13,27,例題初始序列為49, 38, 65, 97, 76, 13, 27, 49,請用起泡排序第一趟起泡例題初始序列為49, 38, 65, 97, 76, 13, 27, 49,請用起泡排序第一趟起泡第二趟起泡第三趟起泡例題(續(xù)第四趟起泡第五趟起泡第六趟起泡例題(續(xù)第四趟起泡第五趟起泡第六趟起泡排序結果為起泡排序申明temN長度YANoswap=true設起泡排序申明temN長度YANoswap=true設標NYN長度-i-YNAY起泡排序的算法評若文件初狀為正序,則一趟起起泡排序的算法評若文件初狀為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度坡屋面小青瓦施工質量監(jiān)督與整改服務合同
- 二零二五年度新加坡留學就業(yè)輔導合同4篇
- 2025專業(yè)級防雷系統(tǒng)設計與施工監(jiān)管合同3篇
- 商場自動扶梯安裝與維護服務合同(2025年度)
- 二零二五版羅絲與楊洋的離婚協(xié)議及財產(chǎn)分割及子女撫養(yǎng)協(xié)議4篇
- 2025年度家具退貨及維修保養(yǎng)服務協(xié)議范本
- 2025版GB∕T30057(環(huán)保)固體廢物處理與資源化利用合同3篇
- 二零二五年度歷史文化遺址草坪保護與旅游合同3篇
- 二零二五年度醫(yī)療信息化系統(tǒng)建設與維護合同2篇
- 2025版新型綠色建筑勞務分包合同范本3篇
- 副總經(jīng)理招聘面試題與參考回答(某大型國企)2024年
- PDCA循環(huán)提高護士培訓率
- 2024-2030年中國智慧水務行業(yè)應用需求分析發(fā)展規(guī)劃研究報告
- 《獅子王》電影賞析
- 河北省保定市定州市2025屆高二數(shù)學第一學期期末監(jiān)測試題含解析
- 中醫(yī)護理人文
- 2024-2030年中國路亞用品市場銷售模式與競爭前景分析報告
- 貨物運輸安全培訓課件
- 前端年終述職報告
- 2024小說推文行業(yè)白皮書
- 市人民醫(yī)院關于開展“改善就醫(yī)感受提升患者體驗主題活動”2023-2025年實施方案及資料匯編
評論
0/150
提交評論