java实现快速排序

选定一个基准值(数据第一个元素),将比基准值大的都挪到右边,比基准值小的都挪到左边,最后找到基准值的位置并返回。

左右都递归进行。

 

 1 package practice;
 2 
 3 public class Qsort {
 4     
 5     public static int partition(int [] arr,int low,int high)
 6     {
 7         int key =arr[low];
 8         while (low<high)
 9         {
10             while (arr[high]>key&&low<high )
11                 high--;
12             arr[low]=arr[high];
13             while (arr[low]<key &&low<high )
14                 low++;
15             arr[high]=arr[low];
16         }
17         
18         arr[low]=key;
19         return low;
20     }
21     
22     public static void quicksort(int []arr,int low,int high )
23     {
24         if(low<high)
25         {
26             int mid=partition(arr,low,high);
27             quicksort(arr,low,mid-1);
28             quicksort(arr,mid+1,high);
29         }
30     }
31     
32     public static void quick(int []arr)
33     {
34         if(arr.length>0)
35         {
36             quicksort(arr,0,arr.length-1);
37         }
38     }
39     
40 }

 

posted @ 2019-03-01 09:00  旺仔流奶  阅读(106)  评论(0编辑  收藏  举报