java快速排序代码

 1 public class test1
 2 {
 3     public static int partition(int[] array,int lo,int hi){
 4             int key=array[lo];
 5             while(lo<hi){
 6                 while(array[hi]>=key&&hi>lo){//从后半部分向前扫描
 7                     hi--;
 8                 }
 9                 array[lo]=array[hi];
10                 while(array[lo]<=key&&hi>lo){//从前半部分向后扫描
11                     lo++;
12                 }
13                 array[hi]=array[lo];
14             }
15             array[lo]=key;
16             return lo;
17     }
18     
19     public static void quick_sort(int[] array,int lo ,int hi){
20         if(lo>=hi){//如果下标不符合要求,就需要return
21             return ;
22         }
23         int index=partition(array,lo,hi);
24         sort(array,lo,index-1);
25         sort(array,index+1,hi); 
26     }
27     public static void main(String args[]){
28     int a[] = {1,3,29,2,78,11,33,25};
29     quick_sort(a,0,7);
30     for (int j = 0;j<a.length ;j++ )
31     {
32         System.out.println(a[j]);
33     }
34     }
35 }

快速排序的时间复杂度位O(nlogn),记忆口诀:跟着我右手左手一个慢动作,右手左手慢动作重播。

posted @ 2018-01-24 13:39  漂渡  阅读(189)  评论(0编辑  收藏  举报