void quicksort(int *left,int * right){
inttmp=*left;
int*first=left;
int*last=right;
while(left!=right){
while(left!=right&&tmp<*right)right--;
*left=*right;
while(left!=right&&tmp>*right)left++;
*right=*left;
}
*left=tmp;
quicksort(first,left-1);
quicksort(left+1,last);
}
int main(char **argv){
int* arr=new int[10];
arr[0]=32;
arr[1]=22;
arr[2]=4;
arr[3]=6;
arr[4]=2;
arr[5]=8;
arr[6]=10;
arr[7]=11;
arr[8]=34;
arr[9]=12;
quicksort(&arr[0],&arr[9]);
return0;
}
Qsort-快排(单向遍历)
void swap(int *c, int* d){
int e;
e = *c;
*c = *d;
*d = e;
}
intpartition(int a[],int p,int r){
int x,i,j;
x = a[r];
i = p - 1;
for(j=p; j<=r-1; j++){
if(a[j] < x){
i++;
swap(&a[i],&a[j]);
}
}
swap(&a[i+1],&a[r]);
return i+1;
}
void quickSort(int a[],int p, int r){
int q;
if(p < r){
q = partition(a,p,r);
quickSort(a,p,q-1);
quickSort(a,q+1,r);
}
}