版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1.實驗要求實驗目的:通過編程,學習、實現、對比各種排序算法,掌握各種排序算法的優(yōu)劣,以及各種算法使用的情況。理解算法的主要思想及流程。實驗內容:使用鏈表實現下面各種排序算法,并進行比較。排序算法:1、插入排序2、冒泡排序(改進型冒泡排序)3、快速排序4、簡單選擇排序5、堆排序(小根堆)要求:1、測試數據分成三類:正序、逆序、隨機數據2、對于這三類數據,比較上述排序算法中關鍵字的比較次數和移動次數(其中關鍵字交換計為3次移動)。3、對于這三類數據,比較上述排序算法中不同算法的執(zhí)行時間,精確到微秒(選作)4、對2和3的結果進行分析,驗證上述各種算法的時間復雜度編寫測試main()函數測試線性表的正確性代碼要求:1、必須要有異常處理,比如刪除空鏈表時需要拋出異常;2、保持良好的編程的風格:代碼段與段之間要有空行和縮近標識符名稱應該與其代表的意義一致函數名之前應該添加注釋說明該函數的功能關鍵代碼應說明其功能3、遞歸程序注意調用的過程,防止棧溢出2.程序分析通過排序算法將單鏈表中的數據進行由小至大(正向排序)存儲結構單鏈表存儲數據:structnode{intdata;node*next;};單鏈表定義如下:classLinkList{private:node*front;public:LinkList(inta[],intn); 接插入排序:首先將待排序數據建立一個帶頭結點的單鏈表。將單鏈表劃分為有序區(qū)和無序區(qū),有序區(qū)只包含一個元素節(jié)點,依次取無序區(qū)中的每一個結點,在有序區(qū)中查找待插入結點的插入位置,然后把該結點從單鏈表中刪除,再插入到相應位置。分析上述排序過程,需設一個工作指針p->next在無序區(qū)中指向待插入的結點,在找到插入位置后,將結點p->next插在結點s和p之間。voidLinkList::InsertSort() 速排序:主要通過軸值將數據從兩端向中間進行比較,交換以實現排序。通過遞歸的調用來實現整個鏈表數據的排序。代碼中選用了第一個元素作為軸值。一趟排序的代碼:voidLinkList::QSZ(node*b,node*e){if(b->next==e||b==e) 進版的冒泡排序:通過設置pos來記錄無序邊界的位置以減少比較次數。將數據從前向后兩兩比較,遇到順序不對是直接交換兩數據的值。每交換一次movef+3;voidLinkList::BubbleSort(){LARGE_INTEGERt1,t2,feq;QueryPerformanceFrequency(&feq); 擇排序:每趟排序再待排序的序列中選擇關鍵碼最小的元素,順序添加至已排好的有序序列最后,知道全部記錄排序完畢。voidLinkList::SelectSort(){LARGE_INTEGERt1,t2,feq;QueryPerformanceFrequency(&feq); 排序:利用前一趟比較的結果來減少比較次數,提高整體的效率。其中通過鏈表儲存了一棵樹。選擇使用小根堆進行排序。voidLinkList::sift(intk,intm){inti=k,j=2*i;while(j<=m){comparef++;if(j<m&&(Get(j)->data>Get(j+1)->data)) j++;if(Get(i)->data<Get(j)->data) break;else{turn(Get(i),Get(j));i=j;j=2*i;}}}voidLinkList::heapsort(intn){LARGE_INTEGERt1,t2,feq;QueryPerformanceFrequency(&feq);出結果的函數:voidtell(LinkList&a,LinkList&b,LinkList&c,LinkList&d,LinkList&e){();comparef=0;movef=0;();cout<<"排序結果:";();cout<<"1.插入排序法: Compare:"<<setw(3)<<comparef<<";Move:"<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<"2.改進型冒泡排序法:Compare:"<<setw(3)<<comparef<<";Move:<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<"3.快速排序法: Compare:"<<setw(3)<<comparef<<";Move:"<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<”4.簡單選擇排序法Compare:"<<setw(3)<<comparef<<";Move:"<<setw(3)<<movef<<endl;comparef=0;movef=0;(10);cout<<"5.堆排序算法Compare:"<<setw(3)<<comparef<<";Move:"<<setw(3)<<movef<<endl;}7.統(tǒng)計時間的函數:#include<>{LARGE_INTEGERt1,t2,feq;QueryPerformanceFrequency(&feq);程序運行結果1.流程圖:結束2.測試條件:如果需要對不同的正序,逆序隨機序列進行排序,則需要在main函數中進行初始化設置。3.測試結論:SBC:\Windows\system32\cmd.exe正序數明:123456789lt>麋作時IS]為:7.89469B-0071234567S910,排序法: Conipcti'B:45§[SIX:7-?^46Ve-W07:型曾泡排序法:Compare:&3間作埠起眼瑞1.噪2.噪3.澡安舞,|可光;l.Ei?894e-006
啡序法: Compare:45s同為:2.36841B-006
困舉拉序法Conpare:54;
間匕?.49995d-00617;Move-Moue:Move:法Compare: 19;Moue: 63列.109H7654221間為:7.89469c-007S:123456789IB序法:Compare: 9;|可為?1.97367e-00G
型冒泡排序法:Compare:
間為:5.52628e-006
排序法:Coware:129;
間為;7.894690-00-?田晅排序,去Oonpare;54
間為:9.0?889e-086MouesSMoveMoue-45Moye:90135I詈間洗一間序省迦異89法叱
7.序9.HF
:4^--Moye:二法Move; 90間塞技累1.操2.噪3.操4.麋5.晴爭排序法Conpare:54;Conpare: 29:8.68416e-006怯CompeLi4e= 21繼續(xù).一■26105839147
:1.1842e-006
12345G7S910
怯:CornpcLi'e: 29J:l-¥7367e-O061冒泡排序法:Compare:Have?38;Moue-7Moue:Moye:10Move;S44.總結通過這次實驗我再次復習了鏈表的建立及相應的操作,對各類排序算法的實現也有了新的理解,在調試過程中出現了許多問題也花費了很多時間和精力去逐步解決,最后程序運行成功的瞬間真的很開心。問題一:直接插入排序中若是使用從后向前比較插入的話(即書上的辦法)難以找到該節(jié)點的前驅節(jié)點,不方便進行操作,所以最后采用了從前向后進行比較。voidLinkList::InsertSort() 入排序法: Compare:“<<setw(3)<<comparef<<"";Move:""<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<"2.改進型冒泡排序法:Compare:"<<setw(3)<<comparef<<”;Move:<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<"3.快速排序法: Compare:"<<setw(3)<<comparef<<";Move:"<<setw⑶<<movef<<endl;comparef=0;movef=0;();cout<<”4.簡單選擇排
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度BIM在綠色交通系統(tǒng)中的應用合同3篇
- 二零二五年度14年國際貿易合同范本-國際貿易電子產品進出口服務協(xié)議2篇
- 2025年度4S店汽車試駕體驗及品牌形象塑造合同2篇
- 2023年年團隊建設項目融資計劃書
- 2023年心電監(jiān)護儀項目融資計劃書
- 2025年度電力設施安全運行保障合同3篇
- 2025版智能安防系統(tǒng)集成服務合同3篇
- 2023年血細胞分析儀器項目融資計劃書
- 2025版快艇銷售及售后服務協(xié)議書模板3篇
- 2025年度日本分公司員工勞動權益保障合同協(xié)議3篇
- 地彈門施工合同施工合同協(xié)議
- 監(jiān)護人考試試題
- 中醫(yī)醫(yī)療技術相關性感染預防與控制
- JT-T-860.2-2013瀝青混合料改性添加劑第2部分:高黏度添加劑
- 細胞生物學智慧樹知到期末考試答案章節(jié)答案2024年中南民族大學
- 2024中國留學生歸國求職洞察報告
- 2024年全國人才流動中心招聘事業(yè)編制人員3人歷年公開引進高層次人才和急需緊缺人才筆試參考題庫(共500題)答案詳解版
- 第十二章 全等三角形 作業(yè)設計-2023-2024學年人教版八年級數學上冊
- 建筑結構荷載規(guī)范DBJ-T 15-101-2022
- “7.18”架橋機坍塌較大事故調查報告20201117
- 制藥專業(yè)畢業(yè)設計開題報告
評論
0/150
提交評論