#include<iostream>//一個快速排序的例子
using? namespace std;
void swap(int &a,int &b){
???? a=a^b;
???? b=a^b;
???? a=a^b;
???? }
void quick(int *a,int n){
???? if(n<=1)
???? return;
???? swap(*a,a[n>1]);//把中間的數(shù)作為分組的標準,并把它換到數(shù)組首
???? int *p=new int[n];
???? int*lp=p;
???? int*rp=p+n-1;
???? int*pt=a+1;
???? int pivot=*a;
???? for(int i=1;i<n;i++)//把數(shù)據(jù) 考到臨時數(shù)組
???????????? {
????????????? if(*pt>pivot)
??????????????????? *rp--=*pt++;
?????????????? else
??????????????????? *lp++=*pt++;??????????????????
???????????? }
?? *lp=pivot;
??? pt=a;
??? lp=p;
??? for(int i=0;i<n;i++)//把數(shù)據(jù)考回來
?????????? *pt++=*lp++;
? delete[] p;
? int left=rp-p;//計算左邊部分的元素個數(shù)
? quick(a,left);
?quick(a+left+1,n-left-1);?
}
?
int main(){
??
??? int a[11]={5,456,3219,416,4,64,31,987,1987,98731,9841};
?quick(a,11);
?
?for(int i=0;i<11;i++)
???????? cout<<a[i]<<' ';
???????? cout<<endl;
???????? char t;
???????? cin>>t;
???????? return 0;
??????
??????
??? }
posted on 2007-01-24 22:16
sunny 閱讀(875)
評論(0) 編輯 收藏