Java 快速排序两种实现

快速排序,只要学习过编程的人肯定都听说过这个名词,但是有时候写的时候还真蒙住了,网上搜罗了下以及查阅了"introduction to algorithm",暂时找到两种实现快排的方式,记录如下:

1.通过挖坑,分治的方式,需要左右交替遍历

思想如下:

代码实现:

 1     public static void quickSort1(int[] a, int s, int e) {
 2         if (s >= e)
 3             return;
 4         int m = a[s];
 5         int i = s, j = e;
 6         while (i < j) {
 7             while (a[j] > m && i < j)
 8                 j--;
 9             if (i < j)
10                 a[i++] = a[j];
11             while (a[i] < m && i < j)
12                 i++;
13             if (i < j)
14                 a[j--] = a[i];
15         }
16         a[i] = m;
17         quickSort1(a, s, i - 1);
18         quickSort1(a, i + 1, e);
19     }

2.将数组分为三个部分:小于中位数、大于中位数和未处理,是算法导论中提供的一种实现

思想如下:

代码如下:

 1     public static void quickSort2(int[] a, int s, int e) {
 2         if (s >= e)
 3             return;
 4         int i = s - 1, j = s;
 5         int m = a[e];
 6         while (i <= j && i <= e && j <= e) {
 7             if (a[j] <= m) {
 8                 int tmp = a[++i];
 9                 a[i] = a[j];
10                 a[j++] = tmp;
11             }
12             else
13                 ++j;
14         }
15         quickSort2(a, s, i - 1);
16         quickSort2(a, i + 1, e);
17     }

 

 

快速排序的两种Java实现,以后发现有别的实现思路再补充。

 

转载于:https://www.cnblogs.com/xlturing/p/4462402.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值