#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]);//把中间的数作为分组的标准,并把它换到数组首
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++)//把数据 考到临时数组
{
if(*pt>pivot)
*rp--=*pt++;
else
*lp++=*pt++;
}
*lp=pivot;
pt=a;
lp=p;
for(int i=0;i<n;i++)//把数据考回来
*pt++=*lp++;
delete[] p;
int left=rp-p;//计算左边部分的元素个数
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 阅读(874)
评论(0) 编辑 收藏