快速排序

快速排序的思想:取数组的第一个数做比较数 t,数组中小于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  
posted @ 2018-11-27 16:43  捞的不谈  阅读(165)  评论(0编辑  收藏  举报