js 实现排序
数组排序方法
JavaScript提供了内置的sort()方法用于对数组进行排序。默认情况下,sort()方法将元素转换为字符串并按照Unicode码点顺序排序。
const fruits = ['banana', 'apple', 'orange', 'grape'];
fruits.sort();
console.log(fruits); // ['apple', 'banana', 'grape', 'orange']
数字排序
对于数字数组,需要提供比较函数以确保正确排序:

const numbers = [40, 100, 1, 5, 25];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 5, 25, 40, 100]
降序排列:
numbers.sort((a, b) => b - a);
console.log(numbers); // [100, 40, 25, 5, 1]
对象数组排序
可以根据对象属性进行排序:

const items = [
{ name: 'Edward', value: 21 },
{ name: 'Sharpe', value: 37 },
{ name: 'And', value: 45 },
];
items.sort((a, b) => a.value - b.value);
console.log(items);
自定义排序算法
实现快速排序算法:
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)];
}
const sortedArray = quickSort([10, 5, 2, 3]);
console.log(sortedArray); // [2, 3, 5, 10]
稳定排序
ES2019规定了sort()必须是稳定排序,即相等元素保持原始顺序:
const data = [
{ name: 'A', age: 20 },
{ name: 'B', age: 30 },
{ name: 'C', age: 20 }
];
data.sort((a, b) => a.age - b.age);
// 相同age的元素A和C保持原始相对顺序
性能考虑
对于大型数组,内置sort()方法通常比自定义实现的算法更快,因为现代JavaScript引擎对其进行了高度优化。






