sort 函数
Array.prototype.sort()
Javascript 中的 sort(<compareFunction>)
函数,如果不存在 <compareFunction>
,默认会先将数组内元素转换成字符串,然后对字符串按照 Unicode 编码大小进行排序。
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
<compareFunction>
作为策略函数,指定了
compareFunction(a, b) < 0
则a排在b前面 => 位置不变compareFunction(a, b) == 0
则顺序不变 => 位置不变compareFunction(a, b) > 0
则b排在a前面 => 位置交换
https://github.com/v8/v8/blob/master/src/js/array.js#L726
策略源码, 若数组长度在10 以内,则使用插入排序
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/sort1
2
3
4
5
6
7
8
9
10
11
12
https://segmentfault.com/q/1010000010717916?sort=created
chrome浏览器中,javascript数组sort函数采用的什么排序算法?
[1, 2, 3].sort((a, b) => 1) // [3, 2, 1]
[1, 2, 3].sort((a, b) => 0) // [1, 2, 3]
[1, 2, 3].sort((a, b) => -1) // [1, 2, 3]
[1, 2, 3].sort((a, b) => true) // [3, 2, 1]
[1, 2, 3].sort((a, b) => false) // [1, 2, 3]
[1, 2, 3].sort((a, b) => a > b) // [1, 2, 3]
[1, 2, 3].sort((a, b) => a < b) // [3, 2, 1]