快速排序算法详解
创作时间:
作者:
@小白创作中心
快速排序算法详解
引用
1
来源
1.
https://m.php.cn/faq/1170230.html
快速排序是一种基于分治策略的高效排序算法。其核心思想是:每次选取一个元素作为枢轴(pivot),将数组划分成两部分,一部分小于枢轴,一部分大于枢轴,然后递归地对这两部分进行排序。
枢轴的正确位置
枢轴元素的正确位置是指:所有小于枢轴的元素位于其左侧,所有大于枢轴的元素位于其右侧。 需要注意的是,左右两侧的元素不必有序,枢轴元素处于正确位置即可。
例如,对于枢轴值为 23 的数组,以下几种情况都满足条件:
[3, 5, 6, 12, 23, 25, 24, 30]
[6, 12, 5, 3, 23, 24, 30, 25]
[3, 6, 5, 12, 23, 30, 25, 24]
寻找枢轴的正确位置
快速排序算法通过一系列比较和交换操作来确定枢轴的正确位置。 让我们以数组
[10, 4, 15, 6, 23, 40, 1, 17, 7, 8]
为例,其中 10 为枢轴:
算法会依次遍历数组,统计小于枢轴的元素个数。 如果遇到小于枢轴的元素,则需要将枢轴向前移动,为其腾出空间。
例如,遇到 4 和 6 时,需要将它们与大于 10 的元素交换位置,以确保小于 10 的元素都位于 10 的左侧。
这个过程会持续到数组末尾。最终,算法会确定枢轴需要移动的步数,从而找到其正确位置。
代码示例 (JavaScript)
以下代码展示了快速排序算法的实现:
function partition(arr, left, right) {
const pivot = arr[left];
let i = left + 1, j = right;
while (i <= j) {
while (i <= j && arr[i] <= pivot) i++;
while (i <= j && arr[j] > pivot) j--;
if (i < j) [arr[i], arr[j]] = [arr[j], arr[i]];
}
[arr[left], arr[j]] = [arr[j], arr[left]];
return j;
}
function quickSort(arr, left = 0, right = arr.length - 1) {
if (left < right) {
const pivotIndex = partition(arr, left, right);
quickSort(arr, left, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, right);
}
return arr;
}
// 示例用法
const arr = [10, 4, 15, 6, 23, 40, 1, 17, 7, 8];
const sortedArr = quickSort(arr);
console.log(sortedArr); // 输出已排序的数组
快速排序通过递归地将数组划分成更小的子数组,并利用枢轴元素的正确位置来高效地完成排序。 其平均时间复杂度为 O(n log n),但在最坏情况下(例如数组已排序)时间复杂度会退化为 O(n²)。
热门推荐
乏力心慌?这个容易被忽略的健康杀手叫“低钾血症”
结婚费用清单明细表:一场婚礼到底需要多少钱?
每天吃多少?用手量!18张原创图片教会你
豆粕正套的操作要点有哪些?这些要点有什么实际意义?
PEEK密封圈:工业密封的卓越之选
洗牙一次多少钱?各类洗牙方法的价格对比
洗澡也有大讲究 冬季这4种洗澡方式不可取
玫瑰花生长在什么地方 分布在哪些地区
法院最新法拍房政策解读及其法律影响分析
法拍房购买全攻略:五大关键步骤助你轻松竞拍心仪房源
“为什么”在生活中的重要性:探索、思考与成长的动力源泉
五分钟了解《苏军》苏联武装力量的历史与军事实力分析
俄罗斯唯一航母:“库兹涅佐夫号”多次起火维修,为何不重新造一艘?
长度的测量实验报告
房产证上名字与产权归属新规:三种购房情形下的法律解读
房产证的效力边界:能否办理出售、迁户口及证明商品房属性
全国“最美教师”于洁:教育之美在于师生情感流动
柜子最佳高度全攻略:从家居到商业场景的实用指南
空气能二联供 vs 壁挂炉采暖:哪种更具效费比?
尧舜禹时期的饮食与养生智慧:自然与健康的和谐共生
归因训练:提升自我效能感的关键策略
面试官的隐秘信号!解读面试中的暗示,提升你的求职成功率
学硬件开发需要什么基础
哪怕工期再赶:这10个装修节点,也要等等先,都是过来人的经验!
香港账户资金转入内地账户是否需要缴税?
个人之间转账1000万需要交税吗?
别让“小鼻炎”变成“大麻烦”
法拍房产权证过户怎么办?二手房交易与车辆保险过户全攻略
科普 | 大熊猫的行为特征
伸展树原理与应用:专家带你探索算法的奥秘