/******************************************************************************
快速排序算法
*******************************************************************************/
#include <stdio.h>
void quickSort(int *a, int len){
if (len < 2) return;
int pivot = a[len / 2];
int left = 0;
int right = len -1;
while (1) {
while (a[left] < pivot)
left++;
while (pivot < a[right])
right--;
if ( left >= right)
break;
int tmp = a[left];
a[left] = a[right];
a[right] = tmp;
left++;
right--;
}
quickSort( a, left);
quickSort( a + left, len - left);
}
void printArray(int *p,int len){
for(int i=0;i<len;i++){
printf("%d ",p[i]);
}
}
int main()
{
int a[] = {-5,-3,-4,1,3,5,4,2};
int len = sizeof(a)/sizeof(int);
printArray(a,len);
printf("\n");
quickSort(a,len);
printArray(a,len);
printf("\n");
return 0;
}