当前位置: 首页 > news >正文

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

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

前后指针法

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

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

图解

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

再次进行交换在这里插入图片描述

此后都是比基准值大的,只需让cur++> 在这里插入图片描述

交换prev 和基准位置(left)的值,完成一次调整
在这里插入图片描述

代码

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;}
http://www.lryc.cn/news/141836.html

相关文章:

  • 软考:中级软件设计师:关系代数:中级软件设计师:关系代数,规范化理论函数依赖,它的价值和用途,键,范式,模式分解
  • openCV实战-系列教程2:阈值与平滑处理(图像阈值/图像平滑处理/高斯/中值滤波)、源码解读
  • C语言第五章-循环结构练习
  • Echarts面积图2.0(范围绘制)
  • flink checkpoint时exact-one模式和atleastone模式的区别
  • QEMU 仿真RISC-V freeRTOS 程序
  • 用大白话来讲讲多线程的知识架构
  • 【uniapp】微信小程序 , 海报轮播图弹窗,点击海报保存到本地,长按海报图片分享,收藏或保存
  • SpringBoot与前端交互遇到的一些问题
  • Maven介绍与配置+IDEA集成Maven+使用Maven命令
  • 毕业设计题目源码-毕业论文参考
  • SSH报错-Terminal shell path: C:\WINDOWS\System32\cmd.exe 此时不应有
  • Docker 轻量级可视化工具Portainer
  • 站点平台技术架构
  • 一个以太坊合约的漏洞分析-重入攻击
  • 测试先行:探索测试驱动开发的深层价值
  • 如何用Dockerfile部署LAMP架构
  • 基于量子粒子群算法(QPSO)优化LSTM的风电、负荷等时间序列预测算法(Matlab代码实现)
  • SQL Server软件安装包分享(附安装教程)
  • 基于Django的博客管理系统
  • windows系统依赖环境一键安装
  • centos7安装nacos
  • 【python】python智能停车场数据分析(代码+数据集)【独一无二】
  • 如何使用Redis来防止穿透、击穿和雪崩问题
  • 以getPositionList为例,查找接口函数定义及接口数据格式定义
  • 一生一芯8——在github上添加ssh key
  • 2023年6月电子学会Python等级考试试卷(一级)答案解析
  • ppt如何转pdf文档?用这个方法可将ppt转pdf
  • Hope.money:新兴DeFi项目如何重新定义稳定币生态的未来?
  • 使用 S3 生命周期精确管理对象生命周期