排序
1.快速排序
一次排序将数据分成两部分,一部分都比另外一部分大。再对这两部分数据按同样的排序方法进行。因为进行了二分操作,复杂度为nlogn
1 private void quick(int[] array,int start,int end){ 2 3 int mid = partition(array,start,end); 4 if(mid >= 0){ 5 if(mid > start) 6 quick(array,start,mid-1); 7 if(mid < end) 8 quick(array,mid+1,end); 9 } 10 } 11 private int partition(int[] array,int low,int high){ 12 if(low >= high) 13 return -1; 14 int temp = array[low]; 15 while(low < high){ 16 while(low < high && array[high] >= temp) high--; 17 if(low < high) 18 array[low] = array[high]; 19 while(low < high && array[low] <= temp) low++; 20 if(low < high) 21 array[high] = array[low]; 22 } 23 array[low] = temp; 24 return low; 25 }
浙公网安备 33010602011771号