【练题记录】Java实现快速排序

25 篇文章 0 订阅
  • 在十大经典排序算法中,快排的应用场景非常多,因此掌握快排的思想和实现是非常重要的。本文以将一个数组从小到大排序为例来讲解快排
十大经典排序算法比较

在这里插入图片描述

快排的基本流程
  • 1、选择一个中轴pivot
  • 2、将比pivot大的元素放到其右边
  • 3、将比pivot小的元素放到其左边
  • 4、分别对左右列表元素按照前三步进行递归
  • 5、递归的终止条件为元素列表的左下标≥右下标
代码实现
public class QuickSort {

    public static void main(String[] args) {
        int[] arrayToSort = {0, 5, 1, 2, 8, 9};
        quickSort(arrayToSort, 0, arrayToSort.length - 1);
        System.out.println(Arrays.toString(arrayToSort));
    }

    private static void quickSort(int[] arrayToSort, int L, int R) {
        if (L >= R) {
            return;
        }

        int left = L;
        int right = R;

        int pivot = arrayToSort[left];
        while (left < right) {
            while (left < right && arrayToSort[right] >= pivot) {
                right--;
            }
            if (left < right) {
                arrayToSort[left] = arrayToSort[right];
            }

            while (left < right && arrayToSort[left] <= pivot) {
                left++;
            }

            if (left < right) {
                arrayToSort[right] = arrayToSort[left];
            }
        }
        arrayToSort[left] = pivot;

        quickSort(arrayToSort, L, left - 1);
        quickSort(arrayToSort, right + 1, R);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值