快速排序算法详解
创作时间:
作者:
@小白创作中心
快速排序算法详解
引用
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²)。
热门推荐
VBA给Excel加密的四种方法详解
如何通过社保局官网获取联系电话?
九寨沟出现凶猛水獭,民间又称水狗子,是真正的“淡水湖霸主”
低危结节是什么意思
测试人必备:Docker Compose 5 分钟搞定复杂环境部署
果树修剪的最佳时间:从种类到季节的全面指南
Excel表格怎么表示动态区域
《湘子桥畔》的潮州文化书写
泄爆夹层与多孔材料耦合作用下掺氢天然气爆炸火焰和冲击波演化动力学特性
养狗指南:什么年龄的狗狗最容易饲养?
蜀道促进了中华民族多元一体格局的形成和发展
毕业后如何查询个人档案所在地,档案管理不容忽视
筛窦炎是一种什么病
懒人必备:火腿肠的N种做法,健康又美味!
如何培养安全的驾驶习惯及存在的难点是什么?这些驾驶习惯在不同路况下如何调整?
IC卡、ID卡、M1卡等各种卡的类型与区别
爱德华·霍普画中的光影与孤独:现代都市下的沉思
《三角洲行动》长弓溪谷冷门大红及房卡点分享
护肤品能否改善痘印?这份护肤指南请收好
精神科护理中,怎么预防患者跌倒等意外?
服务器重启操作指南:软重启与硬重启的详细步骤
斯伯利制冰机深度解析与近期维修指南
地震包应该准备什么?这份实用指南手把手教你做好地震应急准备
如何管理小白团队成员
为什么要培养孩子的规则意识?不要再忽视,错过培养期后悔莫及!
白细胞正常值4000到10000吗
Excel中输入上下标的各种方法
夏天有救了!科学家研制出智能窗,可以控制进入室内的热量!
陕西食记:一城一味,探索三秦美食地图
福鼎白茶制作技艺国家级非遗传承人林振传:以白茶创新引领乡村振兴与产业升级