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

双指针算法:快速排序模拟实现

目录

1.思路解析

2:代码展示


1.思路解析

使用双指针pre和cur

指针cur用于检测符合条件的数据

cur和pre数据发生交换用于将符合条件的数据(比key小)向左扔

一轮循环结束时,以pre为分界点,除去key,pre左边的数字整体比右边小

所以要将key和pre的指针和数据交换以达到”以key为分界点,key左边的数据整体比右边小“

2:代码展示

class solution
{
public:void QuickSort(vector<int>& nums, int left, int right){if (left > right) return;int key = left;int pre = left;int cur = left + 1;while (cur <= right){if (nums[cur] < nums[key])//使用cur去进行数据的探测,//达成条件的数据进行以下while循环{pre++;swap(nums[pre], nums[cur]);//将比key小的数据向pre左扔之后,//以pre为分界点,除去key,pre左边的数据整体比pre右边的数据小}cur++;}swap(nums[key], nums[pre]);key = pre;//将key特殊处理,这样pre左边所有的数据都比pre右边的小QuickSort(nums, left, key - 1);QuickSort(nums, key + 1, right);}
};

总而言之

分两种情况:
1:若cur<key,des和cur正常向后遍历即可
2:但当cur>key时,cur继续向后遍历,直至cur<key才会停下
//如果cur遍历到一串连续<key的数据,那么可将这一串数据整合视为一类东西(都小于key)
//我们的目的是在一轮循环中用cur将nums全部遍历一遍,将比key小的数字全部移动到key左,是key成为分界节点

相关文章:

  • 网络安全的十字路口:向“架构化”转移
  • [IntelliJ IDEA插件]推荐一款简单方便的插件CodeChrono
  • SLAM 精度评估
  • (十三)MipMap
  • 谷歌正在试行人脸识别办公室安全系统
  • mmaction2版本适配(Linux)
  • 比赛获奖的武林秘籍:01 如何看待当代大学生竞赛中“卷”“祖传老项目”“找关系”的现象?
  • 龙芯杯个人赛记录
  • Django 对模型创建的两表插入数据
  • 11.SQL注入-盲注基于(base on boolian)
  • sharepoint api 没有这个文件所属site的权限的情况下访问指定文件
  • 脑启发设计:人工智能的进化之路
  • 深入理解计算机系统 CSAPP 家庭作业8.26
  • RPM方式安装mysql
  • 无法解析的外部符号 _imp_XXX
  • php的引用
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【407天】跃迁之路——程序员高效学习方法论探索系列(实验阶段164-2018.03.19)...
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • Flex布局到底解决了什么问题
  • React Native移动开发实战-3-实现页面间的数据传递
  • 测试如何在敏捷团队中工作?
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 深入浏览器事件循环的本质
  • 数组大概知多少
  • 终端用户监控:真实用户监控还是模拟监控?
  • 自定义函数
  • [地铁译]使用SSD缓存应用数据——Moneta项目: 低成本优化的下一代EVCache ...
  • 如何用纯 CSS 创作一个货车 loader
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • #pragma 指令
  • #大学#套接字
  • %@ page import=%的用法
  • (2)MFC+openGL单文档框架glFrame
  • (39)STM32——FLASH闪存
  • (待修改)PyG安装步骤
  • (二)正点原子I.MX6ULL u-boot移植
  • (十二)devops持续集成开发——jenkins的全局工具配置之sonar qube环境安装及配置
  • (学习日记)2024.02.29:UCOSIII第二节
  • (转)jdk与jre的区别
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NET 跨平台图形库 SkiaSharp 基础应用
  • .net 使用ajax控件后如何调用前端脚本
  • .Net 中Partitioner static与dynamic的性能对比
  • .NET 中的轻量级线程安全
  • .NET/C# 使窗口永不获得焦点
  • .Net中ListT 泛型转成DataTable、DataSet
  • @EnableWebSecurity 注解的用途及适用场景
  • @JoinTable会自动删除关联表的数据
  • @selector(..)警告提示
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(朱雀组)
  • []FET-430SIM508 研究日志 11.3.31