js中的sort方法和原理
文章类型:Javascript
发布者:hp
发布时间:2023-05-19
sort() 方法是 JavaScript 数组的原生方法,用于对数组元素进行排序。会原地修改数组,按照特定的排序规则重新排列数组元素。
1:基于"字典顺序"(Lexicographic order)或"字符顺序"(Character order),而不是严格的数值大小比较(数字数组的排序可能不会按照数值大小来排序)。
2:将数组中的元素转换为字符串,然后比较这些字符串的 Unicode 值来决定排序顺序
3:采用原地排序(快速排序、归并排序)算法,直接修改原始数据,而不是创建新的排序后的数组
1:将数组中的元素转换为字符串
2:比较两个字符串的首个字符的 Unicode 值。如果第一个字符串的 Unicode 值小于第二个字符串的 Unicode 值,则将第一个字符串排在前面;如果大于,则将第一个字符串排在后面;如果相等,则比较下一个字符
3:重复上述比较步骤,直到找到正确的位置,将所有元素排序完成。
const numbers = [10, 2, 5, 1];
numbers.sort((a, b) => a - b);
console.log(numbers); // 输出: [1, 2, 5, 10]
1:通过将数组元素转换为字符串并比较它们的 Unicode 值来排序数组
2:按字典顺序排序字符串,对于数字数组可能得到不符合预期的结果
3:通过传递比较函数可以自定义排序规则,从而正确地对数字数组进行排序
简单版本(进行大小比较,叫唤值,实现升序排序)
function jssort(arr) {
for (let i = 0; i < arr.length - 1; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] > arr[j]) {
// 交换位置
let temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
return arr;
}