Thursday, December 22, 2016

quicksort手动实现

   参考 http://w4lle.github.io/2016/07/03/%E5%BF%AB%E9%80%9F%E6%8E%92%E5%BA%8F/
http://www.jianshu.com/p/a0c93033f8ba

http://flyingcat2013.blog.51cto.com/7061638/1281614

挖坑大法

     public static void quickSort(int[] arr){
      qsort(arr, 0, arr.length-1);
}


private static void qsort(int[] arr, int l, int r){
 int left = l;
 int right = r;
 int key;
 if(l < r){   //必须的
  key = arr[l];//最左挖坑
  while(l<r){
  while(r> l && arr[r] >= key)
  r--;
  arr[l]=arr[r];填左坑挖右坑
  while(r> l && arr[l] < key)
  l++;
  arr[r]=arr[l];填右坑挖左坑
  }
   arr[l]=key;//把左坑填回去
   qsort(arr, left, r-1 );  //partition
   qsort(arr,r+1, right);
 }
    }

No comments:

Post a Comment