全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
數(shù)據(jù)結(jié)構(gòu)實驗報告實驗名稱: 實驗四排序?qū)W生姓名: 班 級: 班內(nèi)序號: 學(xué) 號: 日 期: 2014年12月19日1實驗要求實驗?zāi)康耐ㄟ^實現(xiàn)下述實驗內(nèi)容,學(xué)習(xí)、實現(xiàn)、對比各種排序算法,掌握各種排序算法的優(yōu)劣,以及各種算法使用的情況。實驗內(nèi)容使用簡單數(shù)組實現(xiàn)下面各種排序算法,并進(jìn)行比較。排序算法: 1、插入排序 2、希爾排序3、冒泡排序4、快速排序5、簡單選擇排序6、堆排序(選作)7、歸并排序(選作)8、基數(shù)排序(選作)9、其他要求: 1、測試數(shù)據(jù)分成三類:正序、逆序、隨機(jī)數(shù)據(jù)2、對于這三類數(shù)據(jù),比較上述排序算法中關(guān)鍵字的比較次數(shù)和移動次數(shù)(其中關(guān)鍵字交換計為3次移動)。 3、對于這三類數(shù)據(jù),比較上述排序算法中不同算法的執(zhí)行時間,精確到微秒(選作)4、對2和3的結(jié)果進(jìn)行分析,驗證上述各種算法的時間復(fù)雜度編寫測試main()函數(shù)測試線性表的正確性。2. 程序分析首先,題目要求測試不同的數(shù)據(jù),所以可以手動輸入待排序元素。其次,由于對一組數(shù)據(jù)要求用不同的排序算法來處理,所以需要一個復(fù)制函數(shù)把排序前的無序數(shù)組寄存出去,為下一次排序做準(zhǔn)備。再次,由于每次排序后都需要把排序后的結(jié)果打印出來,代碼是一樣的,根據(jù)相同的代碼可以封裝成一個函數(shù)的思想,所以還需增加一個打印函數(shù)。2.1 存儲結(jié)構(gòu)本程序采用簡單數(shù)組來儲存輸入的待排序數(shù)組2.2 關(guān)鍵算法分析核心算法思想: 1. 利用教材講述的基本算法思想,實現(xiàn)七種排序算法,統(tǒng)計其運行相關(guān)數(shù)據(jù)。 2. 將七種排序函數(shù)入口地址作為函數(shù)指針數(shù)組,實現(xiàn)快速調(diào)用和統(tǒng)計。使得程序代碼可讀 性增、結(jié)構(gòu)更加優(yōu)化。關(guān)鍵算法思想描述和實現(xiàn): 關(guān)鍵算法1: 實現(xiàn)七種算法的基本排序功能。 1、 插入排序:依次將待排序的序列中的每一個記錄插入到先前排序好的序列中,直到全部記錄排序完畢。插入排序的思想是:每次從無序區(qū)取一元素將其添加到有序區(qū)中。2、 希爾排序:先將整個序列分割成若干個子列,分別在各個子列中運用直接插入排序,待整個序列基本有序時,再對全體記錄進(jìn)行一次直接插入排序。3、 冒泡排序:兩兩比較相鄰記錄的關(guān)鍵碼,如果反序則交換,直到?jīng)]有反序記錄為止。4、 快速排序:首先選擇一個基準(zhǔn),將記錄分割為兩部分,左支小于或等于基準(zhǔn),右支則大于基準(zhǔn),然后對兩部分重復(fù)上述過程,直至整個序列排序完成。 5、 選擇排序:從待排序的記錄序列中選擇關(guān)鍵碼最?。ɑ蜃畲螅┑挠涗洸⑺c序列中的第一個記錄交換位置;然后從不包括第一個位置上的記錄序列中選擇關(guān)鍵碼最?。ɑ蜃畲螅┑挠涗洸⑺c序列中的第二個記錄交換位置;如此重復(fù),直到序列中只剩下一個記錄為止。 2.3 其他時間復(fù)雜度與空間復(fù)雜度理論分析可以得出各種排序算法的時間復(fù)雜度和空間復(fù)雜度,如下表所示:排序方法平均情況最好情況最壞情況輔助空間直接插入排序O(n2)O(n)O(n2)O(1)希爾排序O(nlog2n)O(n2)O(n1.3)O(n2)O(1)起泡排序O(n2)O(n)O(n2)O(1)快速排序O(nlog2n)O(nlog2n)O(n2)O(log2n)O(n2)簡單選擇排O(n2)O(n2)O(n2)O(1)3. 程序運行結(jié)果程序運行框圖:實際測試和分析:實際運行結(jié)果如下:1 正序排序2 倒序排序3 亂序排序4. 總結(jié)1、在初期構(gòu)思代碼的時候,首先構(gòu)造了各種算法的基本實現(xiàn)代碼,封裝成類,已經(jīng)能夠?qū)崿F(xiàn)七種排序的基本功能,并且測試無誤。后來考慮能否優(yōu)化本程序,首先考慮到測試算法的需求,需要大量隨機(jī)數(shù),因為增添了隨機(jī)函數(shù)發(fā)生器,滿足各種測試條件的需求。之后考慮如何能簡化代碼以實現(xiàn)多達(dá)七種排序算法的簡單調(diào)用、亂序和順序以及逆序數(shù)據(jù)的分別排序和性能指標(biāo)統(tǒng)計、算法移動次數(shù)和比較次數(shù)的精確統(tǒng)計。如果設(shè)計不合理,將使得主調(diào)函數(shù)的調(diào)用代碼冗長,可讀性變差。因而采用了函數(shù)指針數(shù)組和統(tǒng)一的接口函數(shù),采用二維數(shù)組存儲移動次數(shù)和比較次數(shù),調(diào)用精確的系統(tǒng)函數(shù)實現(xiàn)時間的統(tǒng)計。此外還添加了一些列優(yōu)化,特別是函數(shù)封裝的方法,使得程序的結(jié)構(gòu)變得更加合理,版面風(fēng)格也變得好看,可讀性增強(qiáng)。 2、程序的優(yōu)化是一個艱辛的過程,如果只是實現(xiàn)一般的功能,將變得容易很多,當(dāng)加上優(yōu)化,不論是效率還是結(jié)構(gòu)優(yōu)化,都需要精心設(shè)計。這次做優(yōu)化的過程中,遇到不少阻力。由于優(yōu)化中用到很多類的封裝和訪問控制方面的知識,而這部分知識恰好是大一一年學(xué)習(xí)的薄弱點。因而以后要多花力氣學(xué)習(xí)C+編程語言,必須要加強(qiáng)這方面的訓(xùn)練,這樣才能在將編程思想和數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)換為代碼的時候能得心應(yīng)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度養(yǎng)殖場租賃合同(含農(nóng)業(yè)科技園區(qū)合作)
- 2024年監(jiān)理合同延期實施細(xì)則合同版B版
- 二零二五年度農(nóng)民工勞務(wù)派遣及勞動權(quán)益保障協(xié)議
- 2024年在建房產(chǎn)買賣合同模板(含市場風(fēng)險控制)3篇
- 2025年度搬家服務(wù)與保險理賠合同模板3篇
- 展覽館墻面施工方案設(shè)計
- 2024年版水電安裝工程勞務(wù)分包協(xié)議模板
- 2024年金屬鑄件訂購協(xié)議2篇
- 2024年版離婚房產(chǎn)過戶合同模板一
- 2024年度無錫地區(qū)終止勞動合同補(bǔ)償金標(biāo)準(zhǔn)及計算細(xì)則3篇
- 垃圾焚燒發(fā)電廠消防系統(tǒng)安裝方案
- 露天礦山危險源辨識與風(fēng)險評價
- 履帶吊司機(jī)安全技術(shù)交底
- 班級管理(第3版)教學(xué)課件匯總?cè)纂娮咏贪?完整版)
- 2022年度母嬰護(hù)理師技能試卷題庫
- 玻璃采光頂施工工藝
- 2024年義務(wù)教育國家課程設(shè)置實施方案
- 某乳業(yè)公司價格策略研究
- T∕CIAPS 0012-2021 磷酸鐵鋰電池壽命加速循環(huán)試驗方法
- 低壓配電柜GGD技術(shù)規(guī)范方案設(shè)計
- 汽車維修項目明細(xì)表76608
評論
0/150
提交評論