排序

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     }

 

posted on 2013-01-05 18:45  幸运的小鸟  阅读(75)  评论(0)    收藏  举报

导航