




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)四:部排序算法的實(shí)現(xiàn)與比較一、 問(wèn)題描述 1 實(shí)驗(yàn)題目:在教科書(shū)中,各種部排序算法的時(shí)間復(fù)雜度分析結(jié)果只給出了算法執(zhí)行時(shí)間的階,或大致執(zhí)行時(shí)間。試通過(guò)隨機(jī)數(shù)據(jù)比較各算法的關(guān)鍵字比較次數(shù)和關(guān)鍵字移動(dòng)次數(shù),以取得直觀感受。2 基本要求:(1)對(duì)常用的部排序算法進(jìn)行比較:直接插入排序、簡(jiǎn)單選擇排序、冒泡排序、快速排序、希爾排序、歸并排序。(2利用隨機(jī)函數(shù)產(chǎn)生N(N=30000)個(gè)隨機(jī)整數(shù),作為輸入數(shù)據(jù)作比較;比較的指標(biāo)為關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù)(關(guān)鍵字交換記為3次移動(dòng))。(3)對(duì)結(jié)果作出簡(jiǎn)要分析。3 測(cè)試數(shù)據(jù):隨機(jī)函數(shù)產(chǎn)生。二、 需求分析 1 程序所能達(dá)到的基本可能:通過(guò)隨機(jī)數(shù)據(jù)產(chǎn)
2、生N個(gè)隨機(jī)數(shù),作為輸入數(shù)據(jù)作比較;對(duì)常用的部排序算法:直接插入排序、簡(jiǎn)單選擇排序、冒泡排序、快速排序、希爾排序、歸并排序進(jìn)行比較:比較的指標(biāo)為關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù)(關(guān)鍵字交換記為3次移動(dòng))。最后結(jié)果輸出各種排序算法的關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù),并按從小到大排列。2 輸入的形式與輸入值圍 :隨機(jī)函數(shù)產(chǎn)生的N(N=30000)個(gè)隨機(jī)整數(shù)。3 輸出的形式:輸出各種排序算法的關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù)。并按從小到大排列。4 測(cè)試數(shù)據(jù)要求:隨機(jī)函數(shù)產(chǎn)生的N(N=30000)個(gè)隨機(jī)整數(shù)。三、 概要設(shè)計(jì) 1. 所用到得數(shù)據(jù)結(jié)構(gòu)與其ADT 為了實(shí)現(xiàn)上述功能,應(yīng)以一維數(shù)
3、組表示集合數(shù)據(jù)類(lèi)型。 int sN; int compare6=0,move6=0,DN=0,RSN=0;基本操作: 數(shù)組賦值:for(i=1;iN;i+) si=rand()%100; printf(%dt,si); void copys(int S,int RS,int n)/將s的值賦給RS,void SelectSort(int RS,int n) /直接選擇排序void BubbleSort(int RS,int n)/冒泡排序void InsertSort(int RS,int n) /直接插入排序int QuickSort(int RS,int low,int high)/快速排
4、序void QuickSortprint(int RS,int n)/輸出快速排序后的結(jié)果void Shellsert(int RS,int m,int n)/一趟希爾排序,按間隔m劃分子序列void Shellsort(int RS,int n)/希爾排序void Merge(int RS,int low,int mid,int high)/將兩個(gè)有序序列歸并為一個(gè)有序序列void MSort(int RS,int low,int high)/歸并排序2. 主程序流程與其模塊調(diào)用關(guān)系 void SelectSort(int RS,int n) /直接選擇排序模塊void BubbleSort
5、(int RS,int n)/冒泡排序模塊void InsertSort(int RS,int n) /直接插入排序模塊int QuickSort(int RS,int low,int high)/快速排序模塊void Shellsert(int RS,int m,int n)/一趟希爾排序,按間隔m劃分子序列void Shellsort(int RS,int n)/希爾排序模塊void Merge(int RS,int low,int mid,int high)/將兩個(gè)有序序列歸并為一個(gè)有序序列模塊調(diào)用四、 詳細(xì)設(shè)計(jì) 1. 實(shí)現(xiàn)每個(gè)操作的偽碼,重點(diǎn)語(yǔ)句加注釋 1)void copys(int
6、 S,int RS,int n)/數(shù)組復(fù)制 int i; for(i=1;in;i+)RSi=Si;2) 直接選擇排序void SelectSort(int RS,int n) /直接選擇排序int i,j,k;for(i=1;in;i+)k=i;for(j=i+1;j=n;j+)if(RSjRSk)k=j;compare0+; if(k!=i) RS0=RSk; RSk=RSi; RSi=RS0; move0+=3; printf(直接選擇排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)
7、次數(shù):%dn,compare0,move0);printf(n);3) 冒泡排序void BubbleSort(int RS,int n)/冒泡排序int i,j,flag;for(i=1;i=n;i+)flag=True;for(j=1;j=n-i;j+)if(RSj+1RSj)flag=False;RS0=RSj;RSj=RSj+1;RSj+1=RS0;move1+=3;compare1+;if(flag=True)break;printf(冒泡排序后的結(jié)果:); for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)
8、鍵字的移動(dòng)次數(shù):%dn,compare1,move1);printf(n);4) 直接插入排序void InsertSort(int RS,int n) /直接插入排序int i,j;for(i=2;i=n;i+)RS0=RSi;j=i-1;move2+;while(RS0RSj)compare2+;RSj+1=RSj;move2+;j-;compare2+;RSj+1=RS0;move2+;printf(直接插入排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare
9、2,move2);printf(n);5) 快速排序int QuickSort(int RS,int low,int high)/快速排序int i,j,n;n=high;i=low;j=high;RS0=RSi;move3+;while(i=RS0&ji)j-;compare3+;compare3+;if(ji)RSi=RSj;move3+;i+;while(RSii)i+;compare3+;compare3+; if(ji)RSj=RSi;move3+;j-;RSi=RS0;move3+;if(lowi)QuickSort(RS,low,i-1);if(ihigh)QuickSort(R
10、S,j+1,high);6) 輸出快速排序后的結(jié)果void QuickSortprint(int RS,int n)/輸出快速排序后的結(jié)果 int i;QuickSort(RS,1,n);printf(快速排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare3,move3);printf(n);7) 一趟希爾排序,按間隔m劃分子序列void Shellsert(int RS,int m,int n)/一趟希爾排序,按間隔m劃分子序列int i,j,temp;for(
11、i=m;i=m&temp=1)/循環(huán)直到m為0Shellsert(RS,m,n);m=(m=2?1:(m/2);/縮小增進(jìn)量printf(希爾排序后的結(jié)果:); for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare4,move4);printf(n);9) 將兩個(gè)有序序列歸并為一個(gè)有序序列void Merge(int RS,int low,int mid,int high)/將兩個(gè)有序序列歸并為一個(gè)有序序列int i,j,k;int n1,n2;i=low;j=mid+1;k=low
12、;while(i=mid&j=high)/兩兩比較if(RSi=RSj)Dk=RSi;i+;k+;else Dk=RSj; j+; k+;compare5+;move5+;if(i=mid)for(n1=k,n2=i;n1=high&n2=mid;n1+,n2+)Dn1=RSn2;move5+;elsefor(n1=k,n2=j;n1=high&n2=high;n1+,n2+)Dn1=RSn2;move5+; for(mid=low;mid=high;mid+)RSmid=Dmid;move5+;10) 歸并排序void MSort(int RS,int low,int high)/歸并排序i
13、nt mid;if(lowhigh)mid=(low+high)/2; MSort(RS,low, mid); MSort(RS, mid+1,high);Merge(RS,low,mid,high);11) 主函數(shù)void main() int i,j,sN; time_t rawtime;struct tm * timeinfo; time (&rawtime);timeinfo = localtime (&rawtime); printf( 實(shí)驗(yàn)名稱(chēng):實(shí)驗(yàn)四:部排序算法的實(shí)現(xiàn)與比較n);printf( 學(xué)號(hào):031350102n); printf( :王亞文n); printf(=n);
14、printf(程序運(yùn)行開(kāi)始,);printf(Current local time and date:%s,asctime(timeinfo);printf(產(chǎn)生的隨機(jī)數(shù)為:n); for(i=1;iN;i+) si=rand()%100; printf(%dt,si); printf(n); do copys(s,RS,N);printf(請(qǐng)選擇所需排序方法:); printf(n); printf(1.選擇法 ,2.冒泡法 ,3.插入法 ,4.快速法 , 5.希爾排序法 ,6.歸并排序法,7.輸出比較信息,8.退出n); scanf( %d,&j); switch(j) case 1: S
15、electSort(RS,N-1);break; case 2: BubbleSort(RS,N-1);break; case 3: InsertSort(RS,N-1); break; case 4: QuickSortprint(RS,N-1);break; case 5: Shellsort(RS,N-1);break; case 6:MSort(RS,1,N-1);printf(歸并排序后的結(jié)果:); for(i=1;iN;i+)printf(%dt,Di);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare5,move5);prin
16、tf(n);break;case 7:SelectSort(compare,5);SelectSort(move,5);printf(關(guān)鍵字參加的比較次數(shù):n);for(i=1;i=5;i+)printf(%dt,comparei);printf(n);printf(關(guān)鍵字的移動(dòng)次數(shù):n);for(i=1;i=5;i+)printf(%dt,movei);printf(n);break;case 8: printf(Current local time and date:%s,asctime(timeinfo);exit(0);break; while(1); 五、 調(diào)試分析 1. 設(shè)計(jì)與調(diào)試
17、過(guò)程中遇到的問(wèn)題分析、體會(huì) 調(diào)試過(guò)程:由于本次程序設(shè)計(jì)的數(shù)據(jù)和模塊比較多,所以采用分塊調(diào)試的方法,在編寫(xiě)完一個(gè)部排序算法后,為了驗(yàn)證是否排序成功以與所輸出的關(guān)鍵字比較次數(shù)和移動(dòng)次數(shù)是否正確,采用先定義一個(gè)需要排序9個(gè)數(shù)字的數(shù)組,S10=0,1,2,3,4,5,6,7,8,9和S10=0,9,8,7,6,5,4,3,2,1,用這兩個(gè)數(shù)組檢驗(yàn)程序的正確性與否。調(diào)試步驟,程序與相關(guān)結(jié)果如下:1) 直接選擇排序:#include #include #include void SelectSort(int RS,int n) /直接選擇排序int i,j,k,move=0,compare=0;for(i
18、=1;in;i+)k=i;for(j=i+1;j=n;j+)if(RSjRSk)k=j;compare+; if(k!=i) RS0=RSk; RSk=RSi; RSi=RS0; move+=3; printf(直接選擇排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare,move);printf(n);void main()int s10=0,1,2,3,4,5,6,7,8,9; SelectSort(s,9);s10=0,1,2,3,4,5,6,7,8,9;S1
19、0=0,9,8,7,6,5,4,3,2,12)冒泡排序#include #include #include #define False 0#define True 1void BubbleSort(int RS,int n)/冒泡排序int i,j,flag,move=0,compare=0;for(i=1;i=n;i+)flag=True;for(j=1;j=n-i;j+)if(RSj+1RSj)flag=False;RS0=RSj;RSj=RSj+1;RSj+1=RS0;move+=3;compare+;if(flag=True)break;printf(冒泡排序后的結(jié)果:); for(i
20、=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare,move);printf(n);void main()int s10=0,1,2,3,4,5,6,7,8,9; BubbleSort(s,9);s10=0,1,2,3,4,5,6,7,8,9s10=0,9,8,7,6,5,4,3,2,1;3) 直接插入排序#include #include #include #define False 0#define True 1void InsertSort(int RS,int n) /直接插入排序i
21、nt i,j,compare=0,move=0;for(i=2;i=n;i+)RS0=RSi;j=i-1;move+;while(RS0RSj)compare+;RSj+1=RSj;move+;j-;compare+;RSj+1=RS0;move+;printf(直接插入排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare,move);printf(n);void main()int s10=0,9,8,7,6,5,4,3,2,1; InsertSort(s,9);
22、 s10=0,9,8,7,6,5,4,3,2,1;s10=0,1,2,3,4,5,6,7,8,9;4) 快速排序#include #include #include #define False 0#define True 1int compare6=0,move6=0;int QuickSort(int RS,int low,int high)/快速排序int i,j,n;n=high;i=low;j=high;RS0=RSi;move3+;while(i=RS0&ji)j-;compare3+;compare3+;if(ji)RSi=RSj;move3+;i+;while(RSii)i+;c
23、ompare3+;compare3+; if(ji)RSj=RSi;move3+;j-;RSi=RS0;move3+;if(lowi)QuickSort(RS,low,i-1);if(ihigh)QuickSort(RS,j+1,high);void QuickSortprint(int RS,int n)/輸出快速排序后的結(jié)果 int i;QuickSort(RS,1,n);printf(快速排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare3,move3);p
24、rintf(n);void main()int s10=0,9,8,7,6,5,4,3,2,1; QuickSortprint(s,9);s10=0,9,8,7,6,5,4,3,2,1;5) 希爾排序#include #include #include #define False 0#define True 1int compare6=0,move6=0;void Shellsert(int RS,int m,int n)/一趟希爾排序,按間隔m劃分子序列int i,j,temp;for(i=m;i=m&temp=1)/循環(huán)直到m為0Shellsert(RS,m,n);m=(m=2?1:(m/
25、2);/縮小增進(jìn)量printf(希爾排序后的結(jié)果:); for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare4,move4);printf(n);void main()int s10=0,9,8,7,6,5,4,3,2,1; Shellsort(s,9);s10=0,9,8,7,6,5,4,3,2,1;s10=0,1,2,3,4,5,6,7,8,9;6) 歸并排序#include #include #include #define False 0#define True 1int c
26、ompare6=0,move6=0,D10=0;void Merge(int RS,int low,int mid,int high)/將兩個(gè)有序序列歸并為一個(gè)有序序列int i,j,k;int n1,n2;i=low;j=mid+1;k=low;while(i=mid&j=high)/兩兩比較if(RSi=RSj)Dk=RSi;i+;k+;else Dk=RSj; j+; k+;compare5+;move5+;if(i=mid)for(n1=k,n2=i;n1=high&n2=mid;n1+,n2+)Dn1=RSn2;move5+;elsefor(n1=k,n2=j;n1=high&n2=
27、high;n1+,n2+)Dn1=RSn2;move5+; for(mid=low;mid=high;mid+)RSmid=Dmid;move5+;void MSort(int RS,int low,int high)/歸并排序int mid;if(lowhigh)mid=(low+high)/2; MSort(RS,low, mid); MSort(RS, mid+1,high);Merge(RS,low,mid,high);void main()int s10=0,9,8,7,6,5,4,3,2,1,i; MSort(s,1,9);printf(歸并排序后的結(jié)果:); for(i=1;i1
28、0;i+)printf(%dt,Di);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare5,move5);printf(n);s10=0,9,8,7,6,5,4,3,2,1;調(diào)試過(guò)程中遇到的問(wèn)題:1)這個(gè)部排序算法的實(shí)現(xiàn)與比較程序設(shè)計(jì)中,大部分排序算法在書(shū)上已經(jīng)給了詳細(xì)的程序只需要稍加更改,所以在編寫(xiě)排序程序時(shí)并沒(méi)有太大的問(wèn)題,唯一的問(wèn)題是for(mid=low;mid=high;mid+)RSmid=Dmid;move5+;這段程序一開(kāi)始書(shū)上是放在MSort這個(gè)程序中,但是我放在這個(gè)程序里輸出的排序并不是按照升序排列的,將這段程序改在me
29、rge里,程序就能正常輸出了,還有一個(gè)問(wèn)題是隨機(jī)數(shù)產(chǎn)生的數(shù)字是放在數(shù)組里的,執(zhí)行完第一個(gè)排序后再想去執(zhí)行下一個(gè)排序程序時(shí)再用原來(lái)的數(shù)組就已經(jīng)不是利用隨機(jī)函數(shù)產(chǎn)生的數(shù)組了而是經(jīng)過(guò)排序后形成的有序數(shù)組,這就影響了下一個(gè)程序的正常運(yùn)行,他所輸出的關(guān)鍵字的比較次數(shù)和移動(dòng)次數(shù)就不是我們所想的隨機(jī)函數(shù)產(chǎn)生的數(shù)組排序時(shí)的比較次數(shù)和移動(dòng)次數(shù),為了解決這個(gè)問(wèn)題考慮另外定義一個(gè)數(shù)組,先利用隨機(jī)函數(shù)產(chǎn)生一個(gè)隨機(jī)數(shù)組,每次執(zhí)行排序前都將隨機(jī)數(shù)組中的數(shù)值賦給另一個(gè)數(shù)組,對(duì)另外的數(shù)組執(zhí)行排序程序,這就可以有效解決輸出的關(guān)鍵字的比較次數(shù)和移動(dòng)次數(shù)不對(duì)的問(wèn)題。這樣第一步顯示保證每個(gè)程序都可以將一個(gè)無(wú)序的序列排序成為有序序列。
30、2)在完成了第一步之后就可以進(jìn)行第二部,進(jìn)行關(guān)鍵字的比較次數(shù)和移動(dòng)次數(shù)的計(jì)算,一開(kāi)始我是將每一個(gè)程序中都定義一個(gè)compare和move值,這種辦法在前幾個(gè)程序中并沒(méi)有什么問(wèn)題,也沒(méi)有什么不方便,但在之后一個(gè)函數(shù)需要調(diào)用另一個(gè)函數(shù)時(shí),因?yàn)橐粋€(gè)函數(shù)只能返回一個(gè)值,這個(gè)對(duì)于這個(gè)需要返回兩個(gè)值的程序就不適用了,所以就考慮定義了兩個(gè)數(shù)組,int compare6=0,move6=0,這樣就解決了這個(gè)不能再一個(gè)程序中返回兩個(gè)值得問(wèn)題,同時(shí)也大大簡(jiǎn)化了后面需要對(duì)各種部排序算法所產(chǎn)生的關(guān)鍵字的比較次數(shù)和移動(dòng)次數(shù)的排序與輸出,一舉兩得。這個(gè)程序是通過(guò)隨機(jī)數(shù)據(jù)產(chǎn)生N個(gè)隨機(jī)數(shù),作為輸入數(shù)據(jù)作比較;對(duì)常用的部排序算
31、法:直接插入排序、簡(jiǎn)單選擇排序、冒泡排序、快速排序、希爾排序、歸并排序進(jìn)行比較:比較的指標(biāo)為關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù)(關(guān)鍵字交換記為3次移動(dòng))。最后結(jié)果輸出各種排序算法的關(guān)鍵字參加的比較次數(shù)和關(guān)鍵字的移動(dòng)次數(shù),并按從小到大排列。6、 測(cè)試結(jié)果 7、 附錄 #include #include #include #include #define N 100#define False 0#define True 1int compare6=0,move6=0,DN=0,RSN=0;void copys(int S,int RS,int n) int i; for(i=1;in;i+)R
32、Si=Si;void SelectSort(int RS,int n) /直接選擇排序int i,j,k;for(i=1;in;i+)k=i;for(j=i+1;j=n;j+)if(RSjRSk)k=j;compare0+; if(k!=i) RS0=RSk; RSk=RSi; RSi=RS0; move0+=3; printf(直接選擇排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare0,move0);printf(n);void BubbleSort(int
33、RS,int n)/冒泡排序int i,j,flag;for(i=1;i=n;i+)flag=True;for(j=1;j=n-i;j+)if(RSj+1RSj)flag=False;RS0=RSj;RSj=RSj+1;RSj+1=RS0;move1+=3;compare1+;if(flag=True)break;printf(冒泡排序后的結(jié)果:); for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare1,move1);printf(n);void InsertSort(int RS
34、,int n) /直接插入排序int i,j;for(i=2;i=n;i+)RS0=RSi;j=i-1;move2+;while(RS0RSj)compare2+;RSj+1=RSj;move2+;j-;compare2+;RSj+1=RS0;move2+;printf(直接插入排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare2,move2);printf(n);int QuickSort(int RS,int low,int high)/快速排序int i,j
35、,n;n=high;i=low;j=high;RS0=RSi;move3+;while(i=RS0&ji)j-;compare3+;compare3+;if(ji)RSi=RSj;move3+;i+;while(RSii)i+;compare3+;compare3+; if(ji)RSj=RSi;move3+;j-;RSi=RS0;move3+;if(lowi)QuickSort(RS,low,i-1);if(ihigh)QuickSort(RS,j+1,high);void QuickSortprint(int RS,int n)/輸出快速排序后的結(jié)果 int i;QuickSort(RS,
36、1,n);printf(快速排序后的結(jié)果:);for(i=1;i=n;i+)printf(%dt,RSi);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare3,move3);printf(n);void Shellsert(int RS,int m,int n)/一趟希爾排序,按間隔m劃分子序列int i,j,temp;for(i=m;i=m&temp=1)/循環(huán)直到m為0Shellsert(RS,m,n);m=(m=2?1:(m/2);/縮小增進(jìn)量printf(希爾排序后的結(jié)果:); for(i=1;i=n;i+)printf(%dt,R
37、Si);printf(n);printf(關(guān)鍵字參加的比較次數(shù):%d,關(guān)鍵字的移動(dòng)次數(shù):%dn,compare4,move4);printf(n);void Merge(int RS,int low,int mid,int high)/將兩個(gè)有序序列歸并為一個(gè)有序序列int i,j,k;int n1,n2;i=low;j=mid+1;k=low;while(i=mid&j=high)/兩兩比較if(RSi=RSj)Dk=RSi;i+;k+;else Dk=RSj; j+; k+;compare5+;move5+;if(i=mid)for(n1=k,n2=i;n1=high&n2=mid;n1+,n2+)Dn1=RSn2;move5+;elsefor(n1=k,n2=j;n1=high&n2=high;n1+,n2+)Dn1=RSn2;move5+; for(mid=low;mid=high;mid+)RSmid=Dm
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 腰椎病人護(hù)理課件
- 中醫(yī)內(nèi)科學(xué)課件37虛勞
- 做賬實(shí)操-人力資源外包業(yè)務(wù)的賬務(wù)處理實(shí)例
- 廣東省2024-2025學(xué)年高二下學(xué)期第一次學(xué)情聯(lián)合檢測(cè)生物學(xué)試卷(PDF版無(wú)答案)
- 晶體植入術(shù)的護(hù)理常規(guī)
- 美業(yè)行業(yè)與公司分析
- 電廠考試題附答案
- 插畫(huà)業(yè)務(wù)合同范本
- 藥品退貨管理的操作程序
- 涇源縣2025屆四下數(shù)學(xué)期末考試模擬試題含解析
- 部編教材《村居》《詠柳》1-古詩(shī)兩首名師公開(kāi)課獲獎(jiǎng)?wù)n件百校聯(lián)賽一等獎(jiǎng)?wù)n件
- 2024年山東春季高考語(yǔ)文試題答案詳細(xì)解析
- 患病兒童護(hù)理及其家庭支持(兒科護(hù)理課件)
- 2024年江蘇省揚(yáng)州市邗江區(qū)中考一模物理試題(解析版)
- 智聯(lián)招聘行測(cè)筆試題庫(kù)
- 2024中考化學(xué)試題研究專(zhuān)題《實(shí)驗(yàn)室廢液成分的探究及處理》 課件
- 三年級(jí)數(shù)學(xué)兩位數(shù)乘兩位數(shù)筆算題綜合考核訓(xùn)練題大全附答案
- NB-T20307-2014核電廠冷卻塔環(huán)境影響評(píng)價(jià)技術(shù)規(guī)范
- 高中數(shù)學(xué)選修二(人教A版2019)課后習(xí)題答案解析
- 天然氣管網(wǎng)大數(shù)據(jù)分析與預(yù)測(cè)
- DZ∕T 0148-2014 水文水井地質(zhì)鉆探規(guī)程(正式版)
評(píng)論
0/150
提交評(píng)論