登录

javascript - js中sort函数的底层实现机制?

据说sort函数内部用了二十多种排序方法,是根据要排序数的乱序程度来决定使用哪一种排序方法的,具体是怎样实现的呢?有木有源代码?

# JavaScript
阿神阿神2147 天前581 次浏览

全部回复(4) 我要回复

  • 阿神

    阿神2017-04-10 17:40:24

    20多种。。。稍微有点常识不会这么说的,排序一共都没有20多种。

    array源码

    710行开始。

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 17:40:24

    感谢@ne_smalltown 给出 V8 引擎的 array.js 代码。

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

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 17:40:24

    每个引擎的实现,都不一样阿 ...

    回复
    0
  • ringa_lee

    ringa_lee2017-04-10 17:40:24

    Mozilla/Firefox : 归并排序(jsarray.c 源码)
    V8 :数组长度小于等于 22 的用插入排序,其它的用快速排序(array.js 源码)见下面注释

    // In-place QuickSort algorithm.
    // For short (length <= 22) arrays, insertion sort is used for efficiency.

    Webkit :底层实现用了 C++ 库中的 qsort() 方法(JSArray.cpp 源码)

    Reference:
    http://stackoverflow.com/ques...
    http://stackoverflow.com/ques...
    http://stackoverflow.com/ques...

    回复
    0
  • 取消回复发送