js实现排序
数组排序方法
JavaScript提供了内置的sort()方法用于数组排序。默认情况下,sort()将元素转换为字符串并按照Unicode码点排序。对于数字排序,需传入比较函数。
const numbers = [3, 1, 4, 1, 5, 9];
numbers.sort((a, b) => a - b); // 升序排序 [1, 1, 3, 4, 5, 9]
numbers.sort((a, b) => b - a); // 降序排序 [9, 5, 4, 3, 1, 1]
对象数组排序
对于对象数组,可根据对象的某个属性进行排序。

const users = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 }
];
users.sort((a, b) => a.age - b.age); // 按年龄升序
字符串排序
字符串排序默认按字母顺序排列,可通过localeCompare实现更复杂的排序逻辑。

const fruits = ['banana', 'Apple', 'orange'];
fruits.sort((a, b) => a.localeCompare(b, undefined, { sensitivity: 'base' }));
// 不区分大小写的排序 ['Apple', 'banana', 'orange']
自定义排序算法
实现快速排序算法示例:
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++) {
arr[i] < pivot ? left.push(arr[i]) : right.push(arr[i]);
}
return [...quickSort(left), pivot, ...quickSort(right)];
}
稳定排序实现
ES2019后Array.prototype.sort保证稳定性。如需手动实现稳定排序,可保留原始索引:
function stableSort(arr, compare) {
const indexedArr = arr.map((v, i) => [v, i]);
indexedArr.sort((a, b) => compare(a[0], b[0]) || a[1] - b[1]);
return indexedArr.map(v => v[0]);
}
性能考虑
对于大数据量排序,快速排序和归并排序通常比内置sort()更高效。V8引擎的sort()方法使用Timsort算法(混合归并和插入排序),时间复杂度为O(n log n)。






