資源描述:
《合并、快速排序算法.doc》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫(kù)。
1、快速排序算法1.#include??2.int?a[101],n;//定義全局變量,這兩個(gè)變量需要在子函數(shù)中使用?3.void?quicksort(int?left,int?right)?4.{?5.????int?i,j,t,temp;?6.????if(left>right)?7.???????return;?8.????????????????????????????????9.????temp=a[left];?//temp中存的就是基準(zhǔn)數(shù)?10.????i=left;?11.????j=right;?12.????while(i!=j)?13.?
2、???{?14.???????????????????//順序很重要,要先從右邊開始找?15.???????????????????while(a[j]>=temp?&&?i3、?????????if(i4、quicksort(left,i-1);//繼續(xù)處理左邊的,這里是一個(gè)遞歸的過(guò)程?33.????quicksort(i+1,right);//繼續(xù)處理右邊的?,這里是一個(gè)遞歸的過(guò)程?34.}?35.int?main()?36.{?37.????int?i,j,t;?38.????//讀入數(shù)據(jù)?39.????scanf("%d",&n);?40.????for(i=1;i<=n;i++)?41.???????????????????scanf("%d",&a[i]);?42.????quicksort(1,n);?//快速排序調(diào)用?1.????????????????????
5、?????????2.????//輸出排序后的結(jié)果?3.????for(i=1;i<=n;i++)?4.????????printf("%d?",a[i]);?5.????getchar();getchar();?6.????return?0;?7.}?合并排序(遞歸)#include//調(diào)用setw#include//將b[0]至b[right-left+1]拷貝到a[left]至a[right]templatevoidCopy(Ta[],Tb[],intleft,intright){intsize=right
6、-left+1;for(inti=0;ivoidMerge(Ta[],Tb[],intleft,inti,intright){inta1cout=left,//指向第一個(gè)數(shù)組開頭a1end=i,//指向第一個(gè)數(shù)組結(jié)尾a2cout=i+1,//指向第二個(gè)數(shù)組開頭a2end=right,//指向第二個(gè)數(shù)組結(jié)尾bcout=0;//指向b中的元素for(intj=0;j7、right-left+1次循環(huán){if(a1cout>a1end){b[bcout++]=a[a2cout++];continue;}//如果第一個(gè)數(shù)組結(jié)束,拷貝第二個(gè)數(shù)組的元素到bif(a2cout>a2end){b[bcout++]=a[a1cout++];continue;}//如果第二個(gè)數(shù)組結(jié)束,拷貝第一個(gè)數(shù)組的元素到bif(a[a1cout]