发布于 2024 年 2 月 26 日,星期一
QuickSort是一种高效的排序算法,其本质在于分治策略。通过选择一个基准元素,将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归地对这两部分进行排序。这种分而治之的方法使得QuickSort在平均情况下具有O(n log n)的时间复杂度,且在原地排序,空间复杂度为O(log n)。尽管在最坏情况下可能退化为O(n^2),但通过优化选择基准元素的方法,如三数取中或随机选择,可以显著降低这种风险。因此,QuickSort在实际应用中被广泛使用,尤其是在需要高效排序且内存占用有限的情况下。
欢迎关注 『沉浸式趣谈』https://mp.weixin.qq.com/s?__biz=MzkyOTI2MzE0MQ==&mid=2247485576&idx=1&sn=5ddfe93f427f05f5d126dead859d0dc8&chksm=c20d73c2f57afad4bbea380dfa1bcc15367a4cc06bf5dd0603100e8bd7bb317009fa65442cdb&token=1071012447&lang=zh_CN#rd 公众号 ,一起探索学习前端技术......
前端小菜鸡一枚,分享的文章纯属个人见解,若有不正确或可待讨论点可随意评论,与各位同学一起学习~
Array.prototype.quickSort = function () { // 递归函数 let rec = (arr) => { // 边界条件 if (arr.length <= 1) return arr; // 分区数组 let left = []; let right = []; // 基准元素 let mid = arr[0]; // 循环遍历 for (let i = 1; i < arr.length; i++) { // 比基准小的元素放在基准前面 left,否则放在基准后面 right if (arr[i] < mid) { left.push(arr[i]); } else { right.push(arr[i]); } } // 递归调用两遍的子数组 return [...rec(left), mid, ...rec(right)]; }; // 初始化递归函数 let res = rec(this); res.forEach((item, index) => { this[index] = item; });};let arr = [98, 4, 6, 84, 42, 8674, 434, 56, 465];arr.quickSort();console.log(arr);
Q:(question)
R:(result)
A:(attention matters)
D:(detail info)
S:(summary)
Ana:(analysis)
T:(tips)