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),记忆口诀:跟着我右手左手一个慢动作,右手左手慢动作重播。