算法通关村第十关|青铜|快速排序

快速排序的核心框架是"二叉树的前序遍历+对撞型双指针"。

快速排序的实现1:

java 复制代码
public void quickSort(int[] arr, int left, int right) {
	if (left < right) {
        // pivot将遍历的范围限制在了pivot之前
        int pivot = arr[right];
        int i = left - 1;
        for (int j = left; j < right; j++) {
            if (arr[j] < pivot) {
                i++;
                int temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
        }
        // 哨兵移动到pivotIndex上
        int pivotIndex = i + 1;
        int temp = arr[pivotIndex];
        arr[pivotIndex] = arr[right];
        arr[right] = temp;

        quickSort(arr, left, pivotIndex - 1);
        quickSort(arr, pivotIndex + 1, right);
    }
}

快速排序的实现2:

java 复制代码
public void quickSort(int[] array, int start, int end) {
	if (start >= end) {
        return;
    }
    int left = start, right = end;
    int pivot = array[(start + end) / 2];

    while (left <= right) {
        while (left <= right && array[left] < pivot) {
            left++;
        }
        while (left <= right && array[right] > pivot) {
            right--;
        }
        if (left <= right) {
            int temp = array[left];
            array[left] = array[right];
            array[right] = temp;
            left++;
            right--;
        }
    }
    quickSort(array, start, right);
    quickSort(array, left, end);
}

如果对您有帮助,请点赞关注支持我,谢谢!❤

如有错误或者不足之处,敬请指正!❤

个人主页:星不易

算法通关村专栏:不易|算法通关村

相关推荐
菜鸟233号1 分钟前
力扣647 回文子串 java实现
java·数据结构·leetcode·动态规划
LiLiYuan.3 分钟前
【Cursor 中找不到LeetCode 插件解决办法】
算法·leetcode·职场和发展
Charlie_lll4 分钟前
力扣解题-[3379]转换数组
数据结构·后端·算法·leetcode
qq_12498707537 分钟前
基于Java Web的城市花园小区维修管理系统的设计与实现(源码+论文+部署+安装)
java·开发语言·前端·spring boot·spring·毕业设计·计算机毕业设计
captain37614 分钟前
Java队列(Queue)
算法·链表
h7ml15 分钟前
查券返利机器人的OCR识别集成:Java Tesseract+OpenCV优化图片验证码的自动解析方案
java·机器人·ocr
野犬寒鸦17 分钟前
从零起步学习并发编程 || 第五章:悲观锁与乐观锁的思想与实现及实战应用与问题
java·服务器·数据库·学习·语言模型
TracyCoder12319 分钟前
LeetCode Hot100(23/100)——142. 环形链表 II
算法·leetcode·链表
jigsaw_zyx19 分钟前
提示词工程
人工智能·算法