數(shù)據(jù)結(jié)構(gòu)課件排序ppt.ppt
《數(shù)據(jù)結(jié)構(gòu)課件排序ppt.ppt》由會(huì)員分享,可在線閱讀,更多相關(guān)《數(shù)據(jù)結(jié)構(gòu)課件排序ppt.ppt(69頁珍藏版)》請?jiān)趨R文網(wǎng)上搜索。
1、在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確第第10章章 內(nèi)部排序內(nèi)部排序10.1 概述概述10.2 插入排序插入排序10.3 快速排序快速排序10.4 選擇排序選擇排序10.5 歸并排序歸并排序10.6 基數(shù)排序基數(shù)排序10.7 各種內(nèi)部排序方法的比較討論各種內(nèi)部排序方法的比較討論1在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確10.1概述概述排序排序 是將數(shù)據(jù)元素的一個(gè)任意序列,重新排列成一是將數(shù)據(jù)元素的一個(gè)任意序列,重新排列成一個(gè)按關(guān)鍵字有序的序列。個(gè)按關(guān)鍵字有序
2、的序列。排序的一個(gè)確切定義:排序的一個(gè)確切定義:假設(shè)含假設(shè)含n個(gè)記錄的序列為個(gè)記錄的序列為 R1,R2,R3,Rn其相應(yīng)的關(guān)鍵字序列為其相應(yīng)的關(guān)鍵字序列為K1,K2,Kn需確定需確定1,2,n的一種排列的一種排列P1,P2,P3,Pn,使其相應(yīng)的關(guān)使其相應(yīng)的關(guān)鍵字滿足如下的遞增鍵字滿足如下的遞增(或遞減或遞減)關(guān)系關(guān)系:Kp1Kp2Kpn即使序列即使序列R1,R2,R3,Rn成為一個(gè)按關(guān)鍵字有序的序列成為一個(gè)按關(guān)鍵字有序的序列:Rp1,Rp2,Rp3,Rpn這種操作稱為排序這種操作稱為排序.2在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也
3、很明確穩(wěn)定排序方法穩(wěn)定排序方法假設(shè)假設(shè)Ki=Kj(1=i,j=n,ij),且在排序前的序且在排序前的序列中列中Ri領(lǐng)先于領(lǐng)先于Rj,若在排序后的序列中,若在排序后的序列中Ri仍仍領(lǐng)先領(lǐng)先Rj,則稱所用的排序方法是,則稱所用的排序方法是穩(wěn)定的穩(wěn)定的。不穩(wěn)定排序方法不穩(wěn)定排序方法假設(shè)假設(shè)Ki=Kj(1=i,j=n,ij),且在排序前的序列且在排序前的序列中中Ri領(lǐng)先于領(lǐng)先于Rj,若在排序后的序列中,若在排序后的序列中Rj領(lǐng)先領(lǐng)先Ri,則稱所用的排序方法是,則稱所用的排序方法是不穩(wěn)定的不穩(wěn)定的。例:例:姓名姓名年齡年齡體重體重1李由李由57622王天王天54763七明七明24754張強(qiáng)張強(qiáng)24725
4、陳華陳華2453按某種按某種穩(wěn)定穩(wěn)定方法對(duì)年齡方法對(duì)年齡關(guān)鍵字進(jìn)行關(guān)鍵字進(jìn)行排序排序姓名姓名年齡年齡體重體重3七明七明24754張強(qiáng)張強(qiáng)24725陳華陳華24532王天王天54761李由李由57623在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確姓名姓名年齡年齡體重體重1李由李由57622王天王天54763七明七明24754張強(qiáng)張強(qiáng)24725陳華陳華2453按某種按某種不穩(wěn)不穩(wěn)定定方法對(duì)年方法對(duì)年齡關(guān)鍵字進(jìn)齡關(guān)鍵字進(jìn)行排序行排序姓名姓名年齡年齡體重體重4張強(qiáng)張強(qiáng)24723七明七明24755陳華陳華24532王天王天54761李由李由
5、5762待排序記錄存放在計(jì)算機(jī)隨機(jī)存儲(chǔ)器中進(jìn)待排序記錄存放在計(jì)算機(jī)隨機(jī)存儲(chǔ)器中進(jìn)行的排序過程;行的排序過程;內(nèi)部排序內(nèi)部排序待排序記錄的數(shù)量很大,以致內(nèi)存一次不待排序記錄的數(shù)量很大,以致內(nèi)存一次不能容納全部記錄,在排序過程中尚需對(duì)外能容納全部記錄,在排序過程中尚需對(duì)外存進(jìn)行訪問的排序過程;存進(jìn)行訪問的排序過程;外部排序外部排序4在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確按排序過程中依據(jù)的不同原則對(duì)內(nèi)排方法分類:按排序過程中依據(jù)的不同原則對(duì)內(nèi)排方法分類:(1)插入排序)插入排序(2)交換排序)交換排序(3)選擇排序)選擇排序(4)
6、歸并排序)歸并排序(5)基數(shù)排序)基數(shù)排序按內(nèi)排過程中所需的工作量分類:按內(nèi)排過程中所需的工作量分類:(1)簡單的排序方法,其時(shí)間復(fù)雜度為)簡單的排序方法,其時(shí)間復(fù)雜度為O(nn)(2)先進(jìn)的排序方法,其時(shí)間復(fù)雜度為)先進(jìn)的排序方法,其時(shí)間復(fù)雜度為O(nlogn);(3)基數(shù)排序,其時(shí)間復(fù)雜度為)基數(shù)排序,其時(shí)間復(fù)雜度為O(dn)排序算法的兩種基本操作:排序算法的兩種基本操作:(1)比較比較兩個(gè)關(guān)鍵字的大小;兩個(gè)關(guān)鍵字的大??;(2)將記錄從一個(gè)位置)將記錄從一個(gè)位置移移至另一個(gè)位置;至另一個(gè)位置;5在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的
7、問題也很明確待排序的記錄序列可有三種存儲(chǔ)方式:待排序的記錄序列可有三種存儲(chǔ)方式:(1)待排序的記錄存放在地址連續(xù)的一組存儲(chǔ)單元上。)待排序的記錄存放在地址連續(xù)的一組存儲(chǔ)單元上。(2)待排序的記錄存放在靜態(tài)鏈表中。)待排序的記錄存放在靜態(tài)鏈表中。(3)待排序的記錄本身存儲(chǔ)在一組地址連續(xù)的存儲(chǔ)單元)待排序的記錄本身存儲(chǔ)在一組地址連續(xù)的存儲(chǔ)單元 內(nèi)內(nèi),同時(shí)另設(shè)一個(gè)指示各個(gè)記錄存儲(chǔ)位置的地址向量。同時(shí)另設(shè)一個(gè)指示各個(gè)記錄存儲(chǔ)位置的地址向量。待排序記錄的數(shù)據(jù)類型設(shè)為:待排序記錄的數(shù)據(jù)類型設(shè)為:P2646在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也
8、很明確10.2插入排序插入排序插入排序插入排序直接插入排序直接插入排序折半插入排序折半插入排序2-路插入排序路插入排序表插入排序表插入排序希爾排序希爾排序10.2.1直接插入排序直接插入排序直接插入排序的基本操作是將一個(gè)記錄插入到已排好序的直接插入排序的基本操作是將一個(gè)記錄插入到已排好序的有序表中,從而得到一個(gè)新的、記錄數(shù)增有序表中,從而得到一個(gè)新的、記錄數(shù)增1的有序表。的有序表。例例:有一組待排序的記錄的關(guān)鍵字初始排列如下有一組待排序的記錄的關(guān)鍵字初始排列如下:(49,38,65,97,76,13,27,49)用用L(sqlist L)的的L.r1.key.L.r8.key依次存儲(chǔ)依次存儲(chǔ)L
9、.r1.key.L.r8.key是是遞增有序的遞增有序的直接插直接插入排序入排序7在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確直接插入排序的過程直接插入排序的過程:初始關(guān)鍵字初始關(guān)鍵字r0 r1 r2 r3 r4 r5 r6 r7 r8 49 38 65 97 76 13 27 49第一趟插入第一趟插入384965 97 76 13 27 49第二趟插入第二趟插入38496597 76 13 27 49第三趟插入第三趟插入38 49 65 97 76 13 27 49第四趟插入第四趟插入38 49 65 76 9713 27 49
10、第五趟插入第五趟插入13 38 49 65 76 9727 49第六趟插入第六趟插入13 27 38 49 65 76 9749第七趟插入第七趟插入13 27 38 49 49 65 76 97i=2i=3i=4i=5i=6i=7i=88在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確直接插入排序算法分析直接插入排序算法分析:有有n個(gè)記錄待排序個(gè)記錄待排序,需進(jìn)行需進(jìn)行2.n共共n-1趟插入趟插入;一級(jí)算一級(jí)算法:法:Void insertsort(sqlist&L)for (i=2;i=L.length;+i)第第i趟插入;趟插入;
11、第第i趟插入完成的功能趟插入完成的功能:在含有在含有i-1個(gè)記錄的有序序列個(gè)記錄的有序序列r1.i-1 中插入一個(gè)記錄中插入一個(gè)記錄ri,插入后變成含插入后變成含 有有i個(gè)記錄的有序序列個(gè)記錄的有序序列r1.i。9在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確第第i趟插入的算法趟插入的算法二級(jí)算二級(jí)算法:法:例:第例:第i=7趟插入:趟插入:if (LT(L.ri.key,L.ri-1.key)L.ri插入到插入到 L.r1.L.ri-1中中 L.r0=L.ri;L.ri=L.ri-1;For (j=i-2;LT(L.r0.key,
12、L.rj.key);-j)L.rj+1=L.rj;L.rj+1=L.r0;13 38 49 65 76 97 27 491 2 3 4 5 6 7 810在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確三級(jí)算三級(jí)算法:法:Void insertsort(sqlist&L)for (i=2;i=L.length;+i)if (LT(L.ri.key,L.ri-1.key)L.r0=L.ri;L.ri=L.ri-1;For (j=i-2;LT(L.r0.key,L.rj.key);-j)L.rj+1=L.rj;L.rj+1=L.r0;11
13、在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確直接插入排序的性能分析直接插入排序的性能分析:(1)空間空間:只需一個(gè)記錄的輔助空間只需一個(gè)記錄的輔助空間r0.(2)時(shí)間時(shí)間:基本運(yùn)算基本運(yùn)算:比較和移動(dòng)記錄比較和移動(dòng)記錄;比較和移動(dòng)記錄的次數(shù)與關(guān)鍵字的初始序列有關(guān)比較和移動(dòng)記錄的次數(shù)與關(guān)鍵字的初始序列有關(guān):(1)待排序序列關(guān)鍵字正序排序待排序序列關(guān)鍵字正序排序:關(guān)鍵字比較次數(shù)關(guān)鍵字比較次數(shù):n-1 移動(dòng)記錄的次數(shù)移動(dòng)記錄的次數(shù):0(2)待排序序列關(guān)鍵字逆序排序待排序序列關(guān)鍵字逆序排序:關(guān)鍵字比較次數(shù)關(guān)鍵字比較次數(shù):2+3+n=(n+
14、2)(n-1)/2 移動(dòng)記錄的次數(shù)移動(dòng)記錄的次數(shù):3+4+5+(n+1)=(n+4)(n-1)/2(3)待排序序列關(guān)鍵字隨機(jī)排序待排序序列關(guān)鍵字隨機(jī)排序:關(guān)鍵字比較次數(shù)關(guān)鍵字比較次數(shù):(n-1)(n+4)/4 移動(dòng)記錄的次數(shù)移動(dòng)記錄的次數(shù):(n+4)(n-1)/4直接插入排序算直接插入排序算法的時(shí)間復(fù)雜度法的時(shí)間復(fù)雜度為為O(nn)12在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確10.2.2 其它插入排序其它插入排序折半插入排序折半插入排序:把直接插入算法中對(duì)插入位置的搜索從把直接插入算法中對(duì)插入位置的搜索從順序搜索順序搜索改進(jìn)為
15、改進(jìn)為折半搜索折半搜索.Void Binsertsort(sqlist&L)for (i=2;i=L.length;+i)if (LT(L.ri.key,L.ri-1.key)L.r0=L.ri;L.ri=L.ri-1;For (j=i-2;LT(L.r0.key,L.rj.key);-j)L.rj+1=L.rj;L.rj+1=L.r0;P267算法算法10.213在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確折半插入排序的性能分析折半插入排序的性能分析:(1)空間空間:只需一個(gè)記錄的輔助空間只需一個(gè)記錄的輔助空間r0;(2)時(shí)間時(shí)
16、間:基本運(yùn)算基本運(yùn)算:比較和移動(dòng)記錄比較和移動(dòng)記錄;折半插入排序算法的時(shí)間復(fù)雜度為折半插入排序算法的時(shí)間復(fù)雜度為O(nn)14在整堂課的教學(xué)中,劉教師總是讓學(xué)生帶著問題來學(xué)習(xí),而問題的設(shè)置具有一定的梯度,由淺入深,所提出的問題也很明確2-路插入排序路插入排序?yàn)闇p少排序過程中移動(dòng)記錄的次數(shù),在折半插入排序的為減少排序過程中移動(dòng)記錄的次數(shù),在折半插入排序的基礎(chǔ)上加以改進(jìn):基礎(chǔ)上加以改進(jìn):例例:有一組待排序的記錄的關(guān)鍵字初始排列如下有一組待排序的記錄的關(guān)鍵字初始排列如下:(49,38,65,97,76,13,27,49)另設(shè)一個(gè)和另設(shè)一個(gè)和r同類型的數(shù)組同類型的數(shù)組d,首先將首先將r1賦值給賦值給d
- 1.請仔細(xì)閱讀文檔,確保文檔完整性,對(duì)于不預(yù)覽、不比對(duì)內(nèi)容而直接下載帶來的問題本站不予受理。
- 2.下載的文檔,不會(huì)出現(xiàn)我們的網(wǎng)址水印。
- 3、該文檔所得收入(下載+內(nèi)容+預(yù)覽)歸上傳者、原創(chuàng)作者;如果您是本文檔原作者,請點(diǎn)此認(rèn)領(lǐng)!既往收益都?xì)w您。
下載文檔到電腦,查找使用更方便
20 積分
下載 | 加入VIP,下載共享資源 |
- 配套講稿:
如PPT文件的首頁顯示word圖標(biāo),表示該P(yáng)PT已包含配套word講稿。雙擊word圖標(biāo)可打開word文檔。
- 特殊限制:
部分文檔作品中含有的國旗、國徽等圖片,僅作為作品整體效果示例展示,禁止商用。設(shè)計(jì)者僅對(duì)作品中獨(dú)創(chuàng)性部分享有著作權(quán)。
- 關(guān) 鍵 詞:
- 數(shù)據(jù)結(jié)構(gòu) 課件 排序 ppt