【排序】快速排序(前后指针法)—— 考的最少的一种算法

以从小到大的顺序进行说明。

前后指针法

是指对于一个数组,定义前后各一个指针(prev 和 cur)

  • prev用于卡一个比基准值大的值进行交换
  • cur用于向前遍历出比基准值小的,和prev进行交换

图解

  1. 初始化
  2. 选出基准值4
  • 如果cur 所在的值比基准值小,那就++prev,看prev是否与 cur 在同一个位置(是一个位置那就还不到交换的时候,说明刚到这个比基准值大的区间,要开始让cur往后走,确定这个大区间有多长了)
  • 如果 cur 的值要比4大,需要扩大大区间的范围,但是不++prev,prev就是大区间的起始位置。




    再次进行交换
    此后都是比基准值大的,只需让cur++>
    交换prev 和基准位置(left)的值,完成一次调整

代码

java 复制代码
private int partationRearPrev(int[] array, int left, int right) {
        int key = array[left];
        int prev = left;
        int cur = prev + 1;
        // 取到等号才能遍历完
        while (cur <= right) {
            // 先让prev 向前走,但是和cur 没有位置上的距离,那就不换
            // 和基准值进行比较
            if (array[cur] < array[left]) {
                swap(array, cur, prev);
            }
            cur++;
        }
        // 将分界线置于中间
        swap(array, left, prev);
        // prev就是分界线
        return prev;
    }
相关推荐
枫叶丹41 分钟前
【HarmonyOS 6.0】ArkUI Swiper 组件:深入掌握滑动状态变化事件回调
开发语言·华为·harmonyos
小陈工4 分钟前
2026年4月4日技术资讯洞察:异步编程范式重塑、架构理性回归与开发者体验革命
开发语言·人工智能·python·机器学习·架构·数据挖掘·回归
Swift社区6 分钟前
LeetCode 401 二进制手表 - Swift 题解
算法·leetcode·swift
eSsO KERF6 分钟前
MS SQL Server partition by 函数实战三 成绩排名
java
Darkwanderor7 分钟前
搜索优化——启发式搜索和A*算法
c++·算法·启发式搜索·a星搜索
CAE虚拟与现实7 分钟前
Python在Windows 平台上引入了一种新的安装与运行时管理机制
开发语言·python
Master_oid13 分钟前
机器学习37:K邻近算法(K Nearest Neighbor,KNN)
人工智能·算法·机器学习
承渊政道20 分钟前
【优选算法】(实战突破字符串:经典题型与解题模板)
c语言·数据结构·c++·笔记·学习·算法·容器
Hello eveybody21 分钟前
图论简述+图论考试要点(Python)
开发语言·python·图论
STLearner22 分钟前
WWW 2026 | 时间序列(Time Series)论文总结(预测,生成,插补,分类,异常检测等)
论文阅读·人工智能·深度学习·神经网络·算法·机器学习·数据挖掘