快速排序思想与实现

快排思想

1、确定基数key,默认最左边第一个
2、比基数key大的值放在右边
3、比基数key小的值放在左边,分割成两个区域
4、对两个子区域分别递归排序

注意:在快排当中一定要判断 left < right ,不然排序过头了,

代码


public static void main(String[] args) {

        int[] array = {6, 1, 2, 7, 9, 3, 4, 5, 10, 8,15,29,12,34,11};

        quicklySort(array, 0, array.length - 1);

        System.out.println(Arrays.toString(array));

    }

public static void quicklySort(int[] array, int start, int end) {

        if (start > end) return;

        int left = start, right = end, temp = 0, key = array[left];

        while (left < right) {
            // 确定右边比基数6小的数的下标
            while (array[right] >= key && left < right) {
                right--;
            }
            // 确定左边比基数6大的数的下标
            while (array[left] <= key && left < right) {
                left++;
            }

            // 交换这两个数
            temp = array[left];
            array[left] = array[right];
            array[right] = temp;
        }

        // 将基数置换到中间位置,分割成两个区域
        array[start] = array[left];
        array[left] = key;


        quicklySort(array,start,left-1);
        quicklySort(array,left+1,end);

    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

白鸽呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值