資源描述:
《冒泡排序和快速排序?qū)嶒瀳蟾妗酚蓵T上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗報告實驗名稱實驗三冒泡排序和快速排序班級學(xué)號姓名成績實驗概述:【實驗?zāi)康募耙蟆繉嶒災(zāi)康模和ㄟ^編程程序達到熟悉并掌握教材中所介紹的幾種排序方法。實驗要求:1)隨機產(chǎn)生20位整數(shù)2)輸入序列,編寫程序,按下列排序方法將序列從小到大排序并輸出。1.冒泡排序2.快速排序3)紀錄每種方法比較次數(shù)和移動次數(shù)4)隨機產(chǎn)生2000位整數(shù),重做實驗2),比較兩種算法需要的計算時間。【實驗原理】1.隨機產(chǎn)生20位整數(shù)隨機數(shù)的產(chǎn)生見實驗一。創(chuàng)立一個數(shù)組,將產(chǎn)生的隨機數(shù)存入數(shù)組。2.冒泡排序?qū)τ趲判虻臄?shù)組L(n),使用冒泡排序的算法如下:輸入
2、:數(shù)組L(n)(無序)輸出:數(shù)組L(n)(有序)f=1While(f>0)Do{k=f+1;f=0;Forj=nTokStep-1{IfL(j-1)>L(j)Then{T=L(j);L(j)=L(j+1);L(j+1)=T;f=j;}}}3.快速排序?qū)τ趲判虻臄?shù)組P(n),使用快速排序的算法如下:輸入:待排序的子表P(m:n)。輸出:有序子表P(m:n)。PROCEDUREQKSORT1(P,m,n)IF(n>m)THEN[子表不空]{SPLIT(P,m,n,i);[分割]QKSORT1(P,m,i-1);[對前面子表進行快
3、速排序]QKSORT1(p,i+1,n);[對后面子表進行快速排序]}RETURN4.紀錄每種方法比較次數(shù)和移動次數(shù)設(shè)變量X,Y,記錄上面算法比較和移動的次數(shù)。5.關(guān)于計算時間的比較使用GetTickCount來記錄算法使用時間,具體算法如下:DWORDstart_time;DWORDend_time;DWORDrun_time;start_time=GetTickCount();算法();end_time=GetTickCount();run_time=end_time-start_time;【實驗環(huán)境】(使用的軟硬件)1.
4、硬件:筆記本。2.軟件:WindowXP、TurboC3.0實驗內(nèi)容:【實驗方案設(shè)計】冒泡法排序的程序如下:#include#include#defineN20intcomp=0,move=0;main(){longm=65536;longy=0;intx[N],i=0,j,temp;printf("maopaofapaixu:");printf("zuichuchanshengdesuijishu:");for(;i5、(int)(1000*y/m);printf("%dt",x[i]);}for(j=0;jj;i--){comp++;if(x[i-1]>x[i]){temp=x[i];x[i]=x[i-1];x[i-1]=temp;move++;}}printf("paihaohoudesuijishu:");for(i=0;i6、e#include#include#defineN20intcomp=0,move=0;main(){voidkuaisu(intx[],intleft,intright);longm=65536;longy=0;intx[N],i=0,j,temp,left=0,right=N-1;printf("kuaisufapaixu:");printf("zuichuchanshengdesuijishuruxia:");for(;i7、3849)%m;x[i]=(int)(1000*y/m);printf("%dt",x[i]);}printf("");kuaisu(x,left,right);printf("yongkuaisufapaihaohoudeshu:");for(i=0;i8、=x[left];if(left>right){return;}while(i!=j){comp++;while(x[j]>=temp&&j>i){j--;}if(j>i){x[i++]=x[j];move++;}while(x[i]<=temp&&j>i){i++;}if(