JS数组排序中sort内置的排序方法是什么

在浏览器中运行

function sortNumber(a,b)
{
console.log(a+"对比"+b)
return b-a
}

var arr = [999,111,222,666,444,0]
console.log(arr.sort(sortNumber));

那么输出结果是

999对比111
111对比222
999对比222
111对比666
222对比666
999对比666
111对比444
222对比444
666对比444
111对比0
[999, 666, 444, 222, 111, 0]

他用的排序法是什么?怎么只循环了这么少就对比完了,有没有相关资料参考?
(我是想要他内置的排序法)

阅读 4.7k
3 个回答

优化了的快速排序算法

V8 引擎 sort 函数只给出了两种排序 InsertionSort 和 QuickSort,数量小于10的数组使用 InsertionSort,比10大的数组则使用 QuickSort。

V8的array源码 710行 InnerArraySort func

排序方法具体要看JS引擎的实现的。

像V8的排序用的是类似于快排和插入混合。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题