




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、實訓報告實訓題目:各種排序算法時間性能的比較 學 院: 計算機科學與技術學院 專 業: 軟件工程 班 級: 142 學 號: 1400170269 學生姓名: 莫磊 指導教師: 蔡麗 2016年 3 月15 日一、實訓目的及要求 數據結構是計算機課程的一門重要的基礎課,它的教學要求大致有三個重要方面:其一就是讓學生學會分析研究計算機加工的數據對象的特性,以便為數據選擇適當的物理結構和邏輯結構;其二,根據結構,選擇適當的算法,并初步掌握算法的時間分析和空間分析;其三,學習復雜的程序設計。本綜合實訓利用Visual Studio 2008 集成編程環境為實踐工具,通過上機實踐培養學生分析具體問題、
2、解決實際問題的能力,訓練和培養學生的數據抽象能力和程序設計的能力。 數據結構是一門實踐性較強的課程,以培養學生的數據抽象能力和程序設計的能力為目的。在實訓時應注重培養學生的實際操作能力。本綜合實訓安排了18學時的實驗課時,具體要求如下:1. 學習和理解每個實訓題目的基本理論和方法;2. 掌握每個實驗的實現步驟和關鍵技術;3. 準備好實驗所需要的資源和文檔;4. 上機實現程序,得到通過調試的正確程序。5. 根據每個實驗的不同要求,完成實驗報告的word文檔。2、 實訓環境 Windows XPVisual Studio 2013 三、實訓內容 (1) 設計并實現上述各種排序算法;(2) 產生正序
3、和逆序的初始排列分別調用上述排序算法,并比較時間性能;(3) 產生隨機的初始排列分別調用上述排序算法,并比較時間性能。 (4)對各種排序方法(直接插入排序、希爾排序、起泡排序、直接選擇排序)的時間性能進行比較。四、算法描述及實訓步驟 上述各種排序方法都是基于比較的內排序,其時間主要消耗在排序過程中進行的記錄的比較次數和移動次數,因此,統計在相同數據狀態下不同排序算法的比較次數和移動次數,即可實現比較各種排序算法的目的。 五、總結及心得體會直接選擇排序算法是對冒泡排序的改進,這種方法是在參加排序數組中找出最小(或最大)的數據元素,使它與第一個元素中的數據相互交換位置然后再在余下的元素中找出最小(
4、或最大)的數據元素與第二個元素中的元素交換位置,以此類推直到所有元素成為有序序列。六、實訓結果七、源代碼:#include <stdio.h>#include <stdlib.h>#include <time.h>/正序希爾排序void xiEr(int num, int n, int &no, int &r)int item;int i, j, d;for (d = n / 2; d >= 1; d = d / 2)for (i = d; i<n; i+)item = numi;j = i - d;while (j >=
5、0) && (item<numj)numj + d = numj;j = j - d;r = r + 1;numj + d = item;no = no + 1;/printf("n");/for(int x=0;x<n;x+)/printf("%dt",numx);/逆序希爾排序void xiErUp(int num, int n, int &no, int &r)int item;int i, j, d;for (d = n / 2; d >= 1; d = d / 2)for (i = d; i&l
6、t;n; i+)item = numi;j = i - d;while (j >= 0) && (item>numj)numj + d = numj;j = j - d;r = r + 1;numj + d = item;no = no + 1;/正序冒泡排序void MaoPao(int num, int n, int &no, int &r)bool flag;int test;for (int i = 1; i<n; i+)flag = true;for (int j = n - 1; j >= i; j-)if (numj<
7、numj - 1)test = numj;numj = numj - 1;numj - 1 = test;flag = false;r+;no+;if (flag)return;void MaoPaoUp(int num, int n, int &no, int &r)bool flag;int test;for (int i = 1; i<n; i+)flag = true;for (int j = n - 1; j >= i; j-)if (numj>numj - 1)test = numj;numj = numj - 1;numj - 1 = test;
8、flag = false;r+;no+;if (flag)return;void ChaRu(int num, int n, int &no, int &r)/直接插入排序/ :比較次數,r : 移動次數。int i, j, x;for (i = 1; i<n; i+)no+;x = numi;j = i - 1;while (j >= 0) && (x<numj)r+;numj + 1 = numj;j-; / 順序比較和移動numj + 1 = x;void ChaRuUp(int num, int n, int &no, int
9、&r)/直接插入排序/:比較次數,r : 移動次數。int i, j, x;for (i = 1; i<n; i+)no+;x = numi;j = i - 1;while (j >= 0) && (x>numj)r+;numj + 1 = numj;j-; / 順序比較和移動numj + 1 = x;void XuanZe(int num, int n, int &no, int &r)/直接選擇排序/:比較次數,r:移動次數int x; int i, j, k;for (i = 1; i <= n - 1; i+)k = i
10、- 1;for (j = i; j <= n - 1; j+)no+; if (numj < numk) k = j;if (k != i - 1)r+;x = numi - 1;numi - 1 = numk;numk = x;void XuanZeUp(int num, int n, int &no, int &r)/直接選擇排序/:比較次數,r:移動次數int x; int i, j, k;for (i = 1; i <= n - 1; i+)k = i - 1;for (j = i; j <= n - 1; j+)no+; if (numj &g
11、t; numk) k = j;if (k != i - 1)r+;x = numi - 1;numi - 1 = numk;numk = x;void ShuChu(int num, int n, int no, int r, char name)printf("=輸出%s排序后數據如下=nn", name);for (int x = 0; x<n; x+)printf("%dt", numx);printf("n比較的次數為:%dt移動的次數為:%d", no, r);printf("n=nn");int
12、main()int num100;int n = 100;int no1, no2, no3, no4;int r1, r2, r3, r4;int no11, no22, no33, no44;int r11, r22, r33, r44;char name1 = "希爾正序"char name11 = "希爾逆序"char name2 = "冒泡正序"char name22 = "冒泡逆序"char name3 = "直接插入正序"char name33 = "直接插入逆序&quo
13、t;char name4 = "直接選擇正序"char name44 = "直接選擇逆序"int item1100;int item2100;int item3100;int item4100;int item22100;int item33100;int item44100;no4 = no3 = no2 = no1 = 0;r4 = r3 = r2 = r1 = 0;no44 = no33 = no22 = no11 = 0;r44 = r33 = r22 = r11 = 0;printf("=初始的隨機數據如下=nn");for
14、 (int i = 0; i<n; i+)numi = rand() %100;printf("%dt", numi);for (int x = 0; x<n; x+)item1x = numx;item2x = numx;item3x = numx;item4x = numx;item22x = numx;item33x = numx;item44x = numx;xiEr(num, n, no1, r1);ShuChu(num, n, no1, r1, name1); xiEr(item1,n,no11,r11);ShuChu(item1,n,no11,r1
15、1,name11);MaoPao(item2,n, no2, r2);ShuChu(item2, n, no2, r2, name2);MaoPaoUp(item22, n, no22, r22);ShuChu(item22, n, no22, r22, name22);ChaRu(item3,n,no3,r3);ShuChu(item3, n, no3, r3, name3);ChaRuUp(item33, n, no33, r33);ShuChu(item33, n, no33, r33, name33);XuanZe(item4, n, no4, r4);ShuChu(item4, n,
16、 no4, r4, name4);XuanZeUp(item44, n, no44, r44);ShuChu(item44, n, no44, r44, name44);printf("=n");printf("=n");printf("所有排序的比較次數和移動次數如下:nn");printf("%s:t比較次數為:%d 移動次數為:%dn", name1, no1, r1);printf("%s:t比較次數為:%d 移動次數為:%dn", name1, no11,r11);printf("%s:t比較次數為:%d 移動次數為:%dn", name2, no2, r2);printf("%s:t比較次數為:%d 移動次數為:%dn", name22, no22,r22);printf("%s:t比較次數為:%
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 新目標引領新未來
- 《測控一體化閘門安裝及驗收規程》(征求意見稿)編制說明
- 2025年教育培訓行業品牌塑造與市場推廣策略研究報告:品牌區塊鏈營銷策略
- 2025年運動醫學醫療市場增長動力報告:技術創新趨勢下的市場前景
- 醫藥流通行業供應鏈優化與成本控制2025年競爭格局分析報告
- 元宇宙社交平臺用戶行為洞察報告:2025年用戶體驗優化與瓶頸解析
- 探索廢棄礦井資源再利用與綠色發展協同推進模式
- 2025年綠色金融發展趨勢與投資策略研究報告
- 2025年互聯網醫療平臺在線問診醫療服務質量監控報告
- 2025年潮流玩具市場分析報告:收藏價值與文化傳承深度挖掘
- 幼兒園安全教育《防溺水》課件
- 《走進民間音樂》資料
- 螺桿冷水機組使用說明書
- 2021年北京首通智城科技創新有限責任公司招聘筆試試題及答案解析
- 實習證明模板10篇
- 國開期末考試《建筑制圖基礎》機考試題及答案(第A-1套)
- 越南語基礎實踐教程1第二版完整版ppt全套教學教程最全電子課件整本書ppt
- 酒店治安保衛管理制度
- GB∕T 18885-2020 生態紡織品技術要求
- Q∕SY 06521-2016 煉油化工建設項目EPC總承包管理規范
- 課件心肺復蘇(CPR)
評論
0/150
提交評論