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 }

 

转载于:https://www.cnblogs.com/Aozorazy/p/10454512.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值