🖼️ Lyin's Room

Search

Search IconIcon to open search

sort()排序

Last updated Unknown

  1. sort()函数比较的是ASCII码的大小,而且:Array的sort()方法默认把所有元素先转换为String再排序,所以就有以下问题:
1
2
3
4
// baiDu排在了最后:
['Google', 'baiDu', 'Facebook'].sort(); // ['Facebook', 'Google", 'baiDu']

[10, 20, 1, 2].sort(); // [1, 10, 2, 20]
  1. 正确写法:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
var numbers = [4, 2, 5, 1, 3];
numbers.sort(function(a, b) {
  return a - b;
});
console.log(numbers);

// 也可以写成:
var numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers);

// [1, 2, 3, 4, 5]

思否上面有一个问题: javascript中sort内部使用了什么算法 时间复杂度是多少

答:ECMAScript 没定义具体算法,各个浏览器的实现方式会有不同。

在 Chrome 70 以前,sort 的算法比较特殊:

众所周知:插入排序是稳定的,快速排序是并不稳定的。

从 Chrome 70 开始,V8 团队更新了排序算法,使用了 Timsort 算法。