js 实现排序
JavaScript 实现排序的方法
JavaScript 提供了多种排序方式,包括内置方法和自定义排序算法。以下是常见的实现方式:
使用 Array.prototype.sort()
JavaScript 数组自带 sort() 方法,默认按 Unicode 码点排序:
const arr = [3, 1, 4, 2];
arr.sort(); // 默认排序
console.log(arr); // [1, 2, 3, 4]
对于数字排序需要传入比较函数:

const numbers = [40, 100, 1, 5];
numbers.sort((a, b) => a - b); // 升序
console.log(numbers); // [1, 5, 40, 100]
实现快速排序算法
快速排序是高效的排序算法(平均时间复杂度 O(n log n)):
function quickSort(arr) {
if (arr.length <= 1) return arr;
const pivot = arr[0];
const left = [];
const right = [];
for (let i = 1; i < arr.length; i++) {
if (arr[i] < pivot) left.push(arr[i]);
else right.push(arr[i]);
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
console.log(quickSort([3,6,8,10,1,2,1])); // [1, 1, 2, 3, 6, 8, 10]
实现冒泡排序
冒泡排序是简单的排序算法(时间复杂度 O(n²)):

function bubbleSort(arr) {
let swapped;
do {
swapped = false;
for (let i = 0; i < arr.length - 1; i++) {
if (arr[i] > arr[i + 1]) {
[arr[i], arr[i + 1]] = [arr[i + 1], arr[i]];
swapped = true;
}
}
} while (swapped);
return arr;
}
console.log(bubbleSort([5, 3, 8, 4, 2])); // [2, 3, 4, 5, 8]
对象数组排序
对对象数组按特定属性排序:
const users = [
{ name: 'John', age: 25 },
{ name: 'Jane', age: 22 },
{ name: 'Bob', age: 30 }
];
users.sort((a, b) => a.age - b.age);
console.log(users);
// 输出按年龄升序排列的对象数组
稳定排序实现
ES2019 开始 sort() 已经是稳定排序,如需自行实现:
function stableSort(arr, compare) {
return arr
.map((item, index) => ({ item, index }))
.sort((a, b) => compare(a.item, b.item) || a.index - b.index)
.map(({ item }) => item);
}
这些方法涵盖了 JavaScript 中大多数排序需求,从简单到复杂场景均可适用。






