




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、1 #include #include #include #include #include #define max 100000000 using namespace std; void print(long r,long n) for(int i=1;i=n;i+) coutsetw(4)1) long lastexchangeindex=1;/ 表示已經(jīng)有序for(long j=1;ji;j+) if(rj+1rj) long t=rj; rj=rj+1; rj+1=t; bt+; lastexchangeindex=j;/記下進(jìn)行的位置 i=lastexchangeindex;/本趟進(jìn)
2、行過交換的最后一個記錄的位置cout第y 趟:; y+; for(long x=1;x=i;x+) coutsetw(4)rx; coutsetw(3)ri+1; for(x=i+2;x=n;x+) coutsetw(4)rx; cout; coutendl; 2 return bt; /- /選擇排序/- /static long st=0; long selectminkey(long r,long i,long n)/在 ri.r.length 中選擇關(guān)鍵字最小的記錄 long temp=i;/記錄最小的元素值的位置for(int j=i;jrj) temp=j; /st+; retur
3、n temp; long selectsort(long r,long n) long j,i,t; long y=1; int st=0; for( i=1;in;i+) j = selectminkey(r,i,n);/ 在 l.ri.l.length 中選擇關(guān)鍵字最小的記錄if (i!=j) / 與第 i 個記錄交換 t=ri; ri=rj; rj=t; st+; cout第y 趟: ; y+; for(long x=1;x=i;x+) coutsetw(4)rx; coutsetw(3)ri+1; for(x=i+2;x=n;x+) coutsetw(4)rx; cout; 3 /pr
4、int(r,n); coutendl; return st; /- /直接插入排序/- long insertsort(long r, long n) long y=1; long it=0,j; for(long i=2;i=n;+i) if(riri-1) r0=ri;/ 復(fù)制為哨兵it=it+1; for( j=i-1;r0rj;-j) rj+1=rj;/ 記錄后移it=it+1; rj+1=r0;/ 插入到正確位置it=it+1; cout第y 趟: ; y+; coutsetw(4)r1; for(long x=2;x=i;x+) coutsetw(4)rx; cout; for(x
5、=i+1;x=n;x+) coutsetw(4)rx; coutendl; return it; /- / 快速排序/- static long qt=0; int partition (long r, long low, long high,long n) 4 r0 =rlow; long pivotkey = rlow; / 樞軸qt=qt+2; while (lowhigh) while(low=pivotkey)/ 從右向左搜索- high; rlow = rhigh; qt=qt+1; while (lowhigh & rlow=pivotkey)/ 從左向右搜索+ low;
6、 rhigh = rlow; qt=qt+1; rlow =r0; qt=qt+1; return low; / partition void quicksort (long r, int low, int high,long n,long y)/ 對記錄序列l(wèi).rlow.high 進(jìn)行快速排序 if (low high) / 長度大于 1 long pivotloc = partition(r,low,high,n);/ 對 l.rlow.high 進(jìn)行一次劃分qt=qt+1; cout第y 趟:; y+; print(r,pivotloc-1); coutsetw(2)rpivotloc;
7、 cout; for(long x=pivotloc+1;x=n;x+) coutsetw(5)rx; coutendl; quicksort(r, low, pivotloc-1,n,y); / 對低子序列遞歸排序quicksort(r, pivotloc+1, high,n,y); / 對高子序列遞歸排序 / qsort void quicksort(long r,long n) 5 long y=1; quicksort(r,1,n,n,y); /- /操作選擇函數(shù)/- void operate(long a, long n) void main(); long * r = new lo
8、ng n; time_t start, end;/定義兩個變量double time;/排序時(shí)間long degree;/排序次數(shù)char ch; cout ch; switch(ch) case 1: coutn; coutt=您選擇的是冒泡排序 =n; for(int i = 1; i =n; i +)/ 將隨機(jī)數(shù)付給 ri ri = ai; start=(double)clock(); degree = bubblesort(r, n); end=(double)clock(); time = (double)(end-start)/clk_tck; /print(r,n); cout
9、n; cout 冒泡排序所用時(shí)間: t time n; cout 冒泡排序交換次數(shù): t degree n; coutn; operate(a, n); break; case 2: coutn; coutt=您選擇的是選擇排序 =n; for(int i = 1; i = n; i +) ri = ai; 6 start=(double)clock(); degree = selectsort(r, n); end=(double)clock(); time = (double)(end-start)/clk_tck; /print(r,n); coutn; cout 選擇排序所用時(shí)間: t
10、 time n; cout 選擇排序交換次數(shù): t degree n; cout n; operate(a, n); break; case 3: coutn; coutt=您選擇的是直接插入排序=n; for(int i=1; i=n; i +) ri = ai; start=(double)clock(); degree = insertsort(r, n); end=(double)clock(); time = (double)(end-start)/clk_tck; /print(r,n); coutn; cout 直接插入排序所用時(shí)間: time n; cout 直接插入排序交換次
11、數(shù): degree n; cout n; operate(a, n); break; case 4: coutn; coutt=您選擇的是快速排序 =n; for(int i=1; i=n; i +) ri = ai; start=(double)clock(); quicksort(r, n); end=(double)clock(); 7 time = (double)(end-start)/clk_tck; coutn; cout 快速排序所用時(shí)間: t time n; cout 快速排序交換次數(shù): t qt n; cout n; operate(a, n); break; case a
12、: main(); break; default: cout 輸入錯誤,請選擇正確的操作! n; operate(a, n); break; case 0: cout您已選擇退出程序,謝謝使用n; break; /- /導(dǎo)航菜單函數(shù)/- void daohang() coutn* 排序算法比較*endl; cout*endl; cout= 1 - 冒泡排序=endl; cout= 2 - 選擇排序=endl; cout= 3 - 直接插入排序=endl; cout= 4 - 快速排序=endl; cout= 0 - 退出程序=endl; cout= a - 改變隨機(jī)數(shù)的個數(shù)=endl; cou
13、t*endl; /- 8 /隨機(jī)輸入函數(shù)/- void rand() cout n 請輸入要產(chǎn)生的隨機(jī)數(shù)的個數(shù)(0=n=100000000) : n; cout endl; long *a = new long n; srand(unsigned long)time(null);/產(chǎn)生一個以當(dāng)前時(shí)間開始的隨機(jī)種子for (long i=1; i=n; i+) ai = rand() % n;/n 為最大值 ,其隨機(jī)域?yàn)?0n-1 daohang(); print(a,n); operate(a, n); /- /手動輸入函數(shù)/- void handinput() cout請輸入數(shù)據(jù)個數(shù): endl; int n; coutn; cout endl; long *a = new long
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京市延慶區(qū)2025屆高三下學(xué)期2月一模試題 物理(含答案)
- 河北省衡中清大教育集團(tuán)2025年高三第二學(xué)期期中考試物理試題試卷含解析
- 建東職業(yè)技術(shù)學(xué)院《專業(yè)英語B》2023-2024學(xué)年第一學(xué)期期末試卷
- 廊坊市廣陽區(qū)2025年小升初素養(yǎng)數(shù)學(xué)檢測卷含解析
- 湖北省黃石市育英高級中學(xué)2025屆高三第二學(xué)期高考生物試題模擬試卷含解析
- 日喀則地區(qū)定日縣2025年三下數(shù)學(xué)期末教學(xué)質(zhì)量檢測試題含解析
- 沈陽體育學(xué)院《水土保持工程學(xué)》2023-2024學(xué)年第二學(xué)期期末試卷
- 四川省達(dá)州市重點(diǎn)中學(xué)2025屆高三第四次聯(lián)合測試卷語文試題文試卷含解析
- 山東省青島市市南區(qū)重點(diǎn)達(dá)標(biāo)名校2025屆初三第三次質(zhì)量預(yù)測生物試題試卷含解析
- 云南省麗江市古城中學(xué)2024-2025學(xué)年第二學(xué)期高三第二次模擬考試語文試題含解析
- 山東省日照市東港區(qū)2023-2024學(xué)年六年級下學(xué)期期中數(shù)學(xué)試題
- 李豐黃金K線理論詳解
- MOOC 家庭與社區(qū)教育-南京師范大學(xué) 中國大學(xué)慕課答案
- 癌癥的一病一品
- 初中一年級下學(xué)期期末考試語文試卷含答案(人教版)
- 合作商務(wù)方案
- 檔案數(shù)字化培訓(xùn)課件
- 母與子性可行性報(bào)告
- 口腔行業(yè)人效分析
- 人工智能教育在中小學(xué)班級管理中的應(yīng)用策略
- 華為QSA審核報(bào)告
評論
0/150
提交評論