int partition(int arr[],int left,int right)
{
int p, q, x, t;
x = arr[left];
p = left-1;
q = right+1;
while(p+1 != q) {
if(arr[p+1] <= x)
p++;
else if(arr[q-1] > x)
q--;
else {
t = arr[p+1];
arr[++p] = arr[q-1];
arr[--q] = t;
}
}
arr[left] = arr[p];
arr[p] = x;
return p;
}
void quicksort(int arr[], int left, int right)
{
int p;
if (left < right) {
p=partition(arr, left, right);
quicksort(arr, left, p-1);
quicksort(arr, p+1, right);
}
}
使用:
int aa[]={3,2,5,31,65,23,98,21,34,56,77,43,24,88};
quicksort(aa, 0, sizeof(aa)/sizeof(aa[0])-1);