快速排序的思想:去数组的第一个数做比较数 t,数组中小于t的数全部放到左边,大于t的数全部放到右边,第一次排序结束。用递归把t前面和后面的数在分别带入函数进行下次排序。直到比较数两边只有一个数为止。判断递归停止的条件也就是这了。
1 void quickSort(int a[],int left,int right){ 2 3 if(left>=right) 4 return ; 5 6 int i = left; 7 int j = right; 8 int k = a[i]; 9 while(i<j){ 10 11 while(i<j && k<=a[j]) 12 j--; 13 if(j>i) 14 a[i] = a[j]; 15 16 while(i<j && k>a[i]) 17 i++; 18 if(i<j) 19 a[j] = a[i]; 20 } 21 a[i] = k;//每一次排序后都要把比较数放在中间,以便下次分割 22 quickSort(a,left,i-1); 23 quickSort(a,i+1,right); 24 25 } 26