排序:非递归的快排

目录

非递归的快排:

代码分析:

代码演示:


非递归的快排:

众所周知,递归变成非递归,而如果还想具有递归的功能,那么递归的那部分则需要变成循环来实现。

而再我们的排序中,我们可以采取栈的方式,用入栈、出栈、栈是否为空来完成递归的部分。

如图所示,这是序列分割时的图片,我们可以将一段序列的最左端下标和最右端下标丢入栈内,随后赋予临时变量之后出栈,然后利用临时变量组成的区间将序列进行一次的快排

快排结束返回key值,再根据key值继续划分序列,并且再度传入序列的最左端和最右端下标入栈随后立马赋予临时变量然后出栈,这样用入栈和出栈来控制循环。

代码分析:

这串代码的本质是利用了栈的后进先出的原理,以及二叉树后序遍历的原理。

当一个元素入栈后立马出栈,只要序列不是只剩下一个元素,那么它会带入两个元素入栈。

而这入栈,同时也是一种遍历,如下代码所示,通过计算我们得知最开始是数组的前端后入栈,但是是先出栈,出栈后他会带着四个元素入栈,而后端的两个下标则是被压倒了栈底,直到前端不能再入栈了后端才会出栈并且带四个元素入栈。

代码演示:


相关推荐
Robot_Nav36 分钟前
贪心算法、动态规划与 MPPI 算法结构相关力扣题目汇总
算法·贪心算法·动态规划
战族狼魂1 小时前
每日一课:算法系统学习路线
人工智能·算法·大模型·大语言模型
变量未定义~1 小时前
连通块中点的数量、堆箱子(4星)
算法
j7~2 小时前
【算法】专题二:滑动窗口之水果成蓝,找到字符串中所有字⺟异位词等算法题
c++·算法·滑动窗口·水果成蓝·最小字串覆盖·优选算法精选
木木子222 小时前
# 星座配对深度解析:Select 长列表选择器、矩阵评分算法与数据驱动建议
java·算法·华为·矩阵·harmonyos
大鱼>2 小时前
AI+货物追踪:跨境电商包裹追踪系统
人工智能·深度学习·算法·机器学习
大鱼>2 小时前
AI+货物追踪:全链路货物可视化追踪系统
人工智能·深度学习·算法·机器学习
大江东去浪淘尽千古风流人物2 小时前
【SLAM】slam高动态位姿估计全链路拆解
算法·面试·职场和发展·视觉里程计·slam·vio·大疆
想你依然心痛2 小时前
量子计算对嵌入式密码学的挑战与后量子算法准备
算法·密码学·量子计算
小O的算法实验室2 小时前
2026年SEVC,集成 Q-learning 多目标优化算法+车辆灵活编组列车调度
算法