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

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

快速排序的实现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);
}

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

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

个人主页:星不易

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

相关推荐
2501_941148157 分钟前
高并发搜索引擎Elasticsearch与Solr深度优化在互联网实践分享
java·开发语言·前端
司铭鸿20 分钟前
化学式解析的算法之美:从原子计数到栈的巧妙运用
linux·运维·服务器·算法·动态规划·代理模式·哈希算法
q***133442 分钟前
使用 java -jar 命令启动 Spring Boot 应用时,指定特定的配置文件的几种实现方式
java·spring boot·jar
信码由缰1 小时前
Spring Data JPA 最佳实践【1/2】:实体设计指南
java
ekprada1 小时前
DAY 18 推断聚类后簇的类型
算法·机器学习·支持向量机
生信大表哥1 小时前
Python单细胞分析-基于leiden算法的降维聚类
linux·python·算法·生信·数信院生信服务器·生信云服务器
玫瑰花店2 小时前
万字C++中锁机制和内存序详解
开发语言·c++·算法
曾经的三心草2 小时前
JavaEE初阶-jvm
java·jvm·java-ee
醇氧2 小时前
Idea防止工具栏自动隐藏
java·ide·intellij-idea
m0_639817152 小时前
基于springboot教学资料管理系统【带源码和文档】
java·spring boot·后端