快速排序與簡(jiǎn)單排序性能比較_第1頁
快速排序與簡(jiǎn)單排序性能比較_第2頁
快速排序與簡(jiǎn)單排序性能比較_第3頁
快速排序與簡(jiǎn)單排序性能比較_第4頁
快速排序與簡(jiǎn)單排序性能比較_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、實(shí)驗(yàn)四:快速排序與簡(jiǎn)單排序性能比較學(xué)生姓名:班級(jí):12學(xué)號(hào):完成時(shí)間:2015.06.26本人鄭重聲明:本實(shí)驗(yàn)的程序代碼編寫與調(diào)試、實(shí)驗(yàn)報(bào)告的撰寫均由本人獨(dú)立完成,如被發(fā)現(xiàn)抄襲或與其他同學(xué)作業(yè)雷同,同意取消該實(shí)驗(yàn)成績!聲明人:2015.06.26【實(shí)驗(yàn)內(nèi)容】比較快速排序與簡(jiǎn)單選擇排序算法的性能。學(xué)生須自行實(shí)現(xiàn)簡(jiǎn)單選擇排序算法,并在不同輸入情況下,給出兩種排序算法的比較次數(shù)和移動(dòng)次數(shù)。【編程思路】首先,主函數(shù)中要求輸入數(shù)組長度n,然后申請(qǐng)三個(gè)長度為n的動(dòng)態(tài)數(shù)組,然后輸入數(shù)組元素,分別賦給三個(gè)數(shù)組。數(shù)組p用于快速排序輸出比較次數(shù),數(shù)組pa用于快速排序輸出交換次數(shù),數(shù)組pb用于簡(jiǎn)單選擇排序輸出比較和

2、交換次數(shù)。在簡(jiǎn)單排序過程中,用變量SwapTime記錄交換次數(shù),用變量CompareTime記錄比較次數(shù),每次進(jìn)行比較或交換,相應(yīng)變量自增。在快速排序過程中,由于用到遞歸算法,SwapTime和CompareTime均定義為靜態(tài)變量?!境绦虼a】1主函數(shù)(作業(yè)部分)voidmain()intn;cout“輸入數(shù)列的項(xiàng)數(shù):n;int*p二newintn,pa二newintn,pb二newintn;cout輸入要排序的數(shù)列:endl;for(intj=O;jpj;paj=pj;pbj=pj;cout快速排序比較的次數(shù):quickSort2(p,0,n-l)endl;cout快速排序交換的次數(shù):qu

3、ickSortl(pa,O,nT)endl;Easysort(pb,n);deletep;deletepa;deletepb;p二NULL;pa二NULL;pb二NULL;2快速排序函數(shù)(老師提供)intquickSort1(int*p,intlow,inthigh)/返回交換的次數(shù)inti,j,t;staticintSwapTime=0;/交換的次數(shù)if(lowhigh)/*要排序的元素起止下標(biāo),保證小的放在左邊,大的放在右邊。這里以下標(biāo)為low的元素為基準(zhǔn)點(diǎn)*/i=low;j=high;t=*(p+low);/*暫存基準(zhǔn)點(diǎn)的數(shù)*/while(ij)/*循環(huán)掃描*/while(it)/*在右

4、邊的只要比基準(zhǔn)點(diǎn)大仍放在右邊*/j-;/*前移一個(gè)位置*/if(ij)*(p+i)二*(p+j);/*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)小的數(shù),替換基準(zhǔn)點(diǎn)的數(shù)*/i+;/*后移一個(gè)位置,并以此為基準(zhǔn)點(diǎn)*/SwapTime+;while(ij&*(p+i)二t)/*在左邊的只要小于等于基準(zhǔn)點(diǎn)仍放在左邊*/i+;if(ij)*(p+j)二*(p+i);/*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)大的數(shù),放到右邊*/j-;/*前移一個(gè)位置*/SwapTime+;*(p+i)=t;/*一遍掃描完后,放到適當(dāng)位置*/quickSortl(p,low,i-l);/*對(duì)基準(zhǔn)點(diǎn)左邊的數(shù)再執(zhí)行快速排序*/quickSortl

5、(p,i+l,high);/*對(duì)基準(zhǔn)點(diǎn)右邊的數(shù)再執(zhí)行快速排序*/returnSwapTime;intquickSort2(int*p,intlow,inthigh)/返回比較的次數(shù)inti,j,t;staticintCompareTime=0;/比較的次數(shù)if(lowhigh)/*要排序的元素起止下標(biāo),保證小的放在左邊,大的放在右邊。這里以下標(biāo)為low的元素為基準(zhǔn)點(diǎn)*/i=low;j=high;t=*(p+low);/*暫存基準(zhǔn)點(diǎn)的數(shù)*/for(intk=i;kj;k+)CompareTime+;while(ij)/*循環(huán)掃描*/while(it)/*在右邊的只要比基準(zhǔn)點(diǎn)大仍放在右邊*/j-;

6、/*前移一個(gè)位置*/CompareTime+;if(ij)*(p+i)二*(p+j);/*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)小的數(shù),替換基準(zhǔn)點(diǎn)的數(shù)*/i+;/*后移一個(gè)位置,并以此為基準(zhǔn)點(diǎn)*/while(ij&*(p+i)二t)/*在左邊的只要小于等于基準(zhǔn)點(diǎn)仍放在左邊*/i+;/*后移一個(gè)位置*/CompareTime+;if(ij)*(p+j)二*(p+i);/*上面的循環(huán)退出:即出現(xiàn)比基準(zhǔn)點(diǎn)大的數(shù),放到右邊*/j-;/*前移一個(gè)位置*/*(p+i)=t;/*一遍掃描完后,放到適當(dāng)位置*/quickSort2(p,low,i-l);/*對(duì)基準(zhǔn)點(diǎn)左邊的數(shù)再執(zhí)行快速排序*/quickSort2(p,i+l,high);/*對(duì)基準(zhǔn)點(diǎn)右邊的數(shù)再執(zhí)行快速排序*/returnCompareTime;3簡(jiǎn)單選擇排序函數(shù)(老師提供)voidEasysort(int*p,intn)intSwapTime=0;/交換的次數(shù)intCompareTime=0;intt二p0;for(inti二0;in1;i+)intk;k=i;for(intj=i+1;jn;CompareTime+;if(pjpk)k=j;if(i!=k)SwapTime+;t二pi;pi=pk;pk=t;printf(“簡(jiǎn)單排序比較的次數(shù):%dprintf(n);printf(簡(jiǎn)單排序交換的次數(shù):%dprintf(n);j+),Com

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論