下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
實驗八排序一、實驗目的1.熟悉掌握教材中所介紹的幾種排序方法。2.學會分析各種內(nèi)排序算法的性能。二、實驗內(nèi)容隨機產(chǎn)生20位整數(shù)輸入序列,編寫程序,按下列排序方法將序列從小到大排序并輸出。冒泡排序快速排序紀錄每種方法比較次數(shù)和移動次數(shù)三、實驗步驟1、冒泡排序冒泡排序(BubbleSort)的基本概念是:依次比較相鄰的兩個數(shù),將小數(shù)放在前面,大數(shù)放在后面。即首先比較第1個和第2個數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個數(shù)和第3個數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個數(shù),將小數(shù)放前,大數(shù)放后。重復以上過程,仍從第一對數(shù)開始比較。如此下去,直至最終完成排序。 2、快速排序基本思想快速排序(Quicksort)是對冒泡排序的一種改進。由C.A.R.Hoare在1962年提出。它的基本思想是:通過一趟排序?qū)⒁判虻臄?shù)據(jù)分割成獨立的兩部分,其中一部分的所有數(shù)據(jù)都比另外一部分的所有數(shù)據(jù)都要小,然后再按此方法對這兩部分數(shù)據(jù)分別進行快速排序,整個排序過程可以遞歸進行,以此達到整個數(shù)據(jù)變成有序序列。實現(xiàn)方法設要排序的數(shù)組是A[0]……A[N-1],首先任意選取一個數(shù)據(jù)(通常選用第一個數(shù)據(jù))作為關鍵數(shù)據(jù),然后將所有比它小的數(shù)都放到它前面,所有比它大的數(shù)都放到它后面,這個過程稱為一趟快速排序。一趟快速排序的算法是:1)設置兩個變量I、J,排序開始的時候:I=1,J=N-1;2)以第一個數(shù)組元素作為關鍵數(shù)據(jù),賦值給X,即X=A[0];3)從J開始向前搜索,即由后開始向前搜索(J=J-1),找到第一個小于X的值,讓該值與X交換;4)從I開始向后搜索,即由前開始向后搜索(I=I+1),找到第一個大于X的值,讓該值與X交換;5)重復第3、4步,直到I=J;算法說明首先為了避免產(chǎn)生的隨機數(shù)過大,我們限定了了隨機數(shù)為1-100之間,其次我們分別運用函數(shù)產(chǎn)生隨機數(shù)兩次,第一次為使用冒泡排序,第二次為使用快速排序。測試結(jié)果分析與探討在設計中除了注意冒泡排序和快速排序的原理外,還需要注意函數(shù)間的套用中出現(xiàn)的形參和實參的類型統(tǒng)一,以及交換兩個數(shù)值時候,中介參數(shù)的使用。附錄:源代碼源代碼列在附錄中,要求程序風格清晰易理解,有充分的注釋。有意義的注釋行不少于30%。#include"stdio.h"#include"time.h"#include"stdlib.h"#include"iostream"usingnamespacestd;voidQuickSort(intp[],intstart,intend){if(start>=end){return;}inti=0,j=0,tmp=0;i=start;j=end-1;do{while(p[i]<p[end]){i++;}while(p[j]>=p[end]){j--;}if(i<j){tmp=p[i];p[i]=p[j];p[j]=tmp;}else{tmp=p[i];p[i]=p[end];p[end]=tmp;}}while(i<j);QuickSort(p,start,i-1);QuickSort(p,i+1,end);}voidPrintArrary(intdata[],intsize){for(inti=0;i<size;++i){cout<<data[i]<<"";}cout<<endl;}voidmain(){ inta[20],i,j,t,flag; intargc[20]; srand((unsigned)time(0)); for(i=0;i<20;i++) a[i]=rand()%100; cout<<"隨機產(chǎn)生20個100以內(nèi)的整數(shù)"<<endl; for(i=0;i<20;i++) cout<<a[i]<<""; for(i=0;i<19;i++)/*改進型冒泡法排序*/ { flag=0; for(j=0;j<20-i-1;j++) if(a[j]>a[j+1]) { t=a[j];/*交換a[i]和a[j]*/ a[j]=a[j+1]; a[j+1]=t; flag=1; } if(flag==0)break; } cout<<endl; cout<<"將這20個整數(shù)按照冒泡排序進行升序排列"<<endl; for(i=0;i<20;i++) cout<<a[i]<<""; cout<<endl; for(i=0;i<20;i++) argc[i]=rand()%100; cout<<"再次隨機產(chǎn)生20個100以內(nèi)的整數(shù)"<<endl; Pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版承包工地食堂餐廚垃圾處理合同模板3篇
- 2024蔬菜加工產(chǎn)品銷售合作協(xié)議3篇
- 2024年股權(quán)轉(zhuǎn)讓合同標的及屬性詳細描述
- 2024年版物業(yè)托管服務協(xié)議版B版
- 二零二五版離婚協(xié)議書起草與審核合同2篇
- 2024版房屋贈與合同協(xié)議書大全
- 天津中德應用技術大學《教育技術與傳播》2023-2024學年第一學期期末試卷
- 二零二五版家政服務+家庭健康促進合同3篇
- 太原幼兒師范高等??茖W?!段麽t(yī)外科學醫(yī)學免疫學與病原生物學》2023-2024學年第一學期期末試卷
- 二零二五年特殊用途變壓器安裝與性能測試合同2篇
- 《浸沒式液冷冷卻液選型要求》
- 迪士尼樂園總體規(guī)劃
- 2024年江蘇省蘇州市中考數(shù)學試卷含答案
- 2024年世界職業(yè)院校技能大賽高職組“市政管線(道)數(shù)字化施工組”賽項考試題庫
- 介紹蝴蝶蘭課件
- 大學計算機基礎(第2版) 課件 第1章 計算機概述
- 數(shù)字化年終述職報告
- 2024年職工普法教育宣講培訓課件
- 安保服務評分標準
- T-SDLPA 0001-2024 研究型病房建設和配置標準
- (人教PEP2024版)英語一年級上冊Unit 1 教學課件(新教材)
評論
0/150
提交評論