快速排序算法详解
创作时间:
作者:
@小白创作中心
快速排序算法详解
引用
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²)。
热门推荐
为什么人学习正常,AI学习就是抄袭
桑葚是肝脏的“守卫”?医生强调:若想肝脏健康,多吃这几种水果
医学生也能写代码?复旦上医这门课带你玩转AI!
道教全真派发祥地——圣经山的传说
打造你的专属手感:客制化键盘选购指南与详细解析
如何拍出电影感照片?一分钟教会你!简单大气又高级
矿渣资源化再生利用:从废料到建筑材料的华丽转身
谁来照料0-3岁的孩子?多位全国政协委员提出建议
玫瑰花的性质及特征——完全花还是不完全花(揭开玫瑰花的奥秘)
自制鲜花饼|零失败!完美复刻,酥到掉渣,简单易上手!
解码古文字,AI助力古代历史研究
行车记录仪安装指南:点烟口取电与保险盒取电两种方式详解
修罗、夜叉、罗刹有什么区别 修罗夜叉和罗刹区别简述
木瓜寨古茶园:古树茶、遗址、古镇与古堡探秘
宝宝喝过期奶粉会怎样
为什么说包菜吃了会尿酸高
蒲公英寒性大吗
超载258%!又一批“百吨王”被查获!年终岁末严防货车肇“祸”
开户行应该怎么填写?详解银行账户信息填写注意事项
阴阳师历史溯源:从中国阴阳五行到日本神秘文化
英联邦最高职务候选人集体表示:支持向前殖民国索赔
甪直古镇游玩攻略:含门票、交通、游玩路线、景点介绍、美食
主题研学旅行何处去?这篇文章带你探寻宝藏研学地
头晕、胃打嗝和大便不成形?可能是这些原因!
Steam游戏库迁移指南:轻松将游戏移至其他硬盘
优化学习方向-高考志愿填报时如何寻找自身优势
肺大泡微创切除后的恢复和注意事项
电脑散热硅脂更换周期及应急替代方案
品鉴冰酒:从饮用温度到食物搭配的完全指南
学化工的话学什么专业好(化工专业,何去何从?)