JavaScript常用排序算法中,快速排序是高效O(n log n)的分治算法,选基准值划分数组并递归排序,原地实现但最坏O(n²),不稳定,适合无序数据。

JavaScript 中常用的排序算法包括冒泡排序、选择排序、插入排序、快速排序、归并排序、堆排序等。其中,快速排序和归并排序是两种高效、实用的 O(n log n) 级别排序算法,适合处理中大型数组。它们在原生 Array.prototype.sort() 的底层实现中也常被参考(V8 引擎目前主要用 Timsort,是归并+插入的混合优化版本)。
快速排序(Quicksort)原理与实现
核心思想是“分治”:选一个基准值(pivot),将数组分为三部分——小于 pivot 的、等于 pivot 的、大于 pivot 的,再递归排序前后两部分。
- 不依赖额外空间(原地排序),但最坏时间复杂度为 O(n²),平均为 O(n log n)
- 不稳定排序(相等元素的相对位置可能改变)
- 适合内存受限、数据基本无序的场景
简易实现(非原地,更易理解):
function quickSort(arr) {
if (arr.length <= 1) return arr;
<p>const pivot = arr[Math.floor(arr.length / 2)];
const left = [];
const right = [];
const equal = [];</p><p>for (let val of arr) {
if (val < pivot) left.push(val);
else if (val > pivot) right.push(val);
else equal.push(val);
}</p><p>return [...quickSort(left), ...equal, ...quickSort(right)];
}
// 使用示例
console.log(quickSort([3, 6, 8, 10, 1, 2, 1])); // [1, 1, 2, 3, 6, 8, 10]
登录后复制
归并排序(Merge Sort)原理与实现
也是分治法:把数组不断二分直到单元素,再逐层合并两个已排序子数组,合并时按顺序归并。
立即学习“Java免费学习笔记(深入)”;
标签: javascript java 排序算法 冒泡排序
还木有评论哦,快来抢沙发吧~