JavaScript Array#sort() 函数使用哪种算法?

javascriptobject oriented programmingfront end technology

JavaScript 规范未指定在 Array.sort 实现中使用的特定算法。这留给实现者决定。因此,不同的 JS 引擎使用不同的排序算法。

Mozilla(Spider Monkey JS 引擎)使用 mergeSort。您可以在 Mozilla 存储库中看到用 C 语言编写的代码:https://dxr.mozilla.org/seamonkey/source/js/src/jsarray.c

WebKit(Chrome、Safari 等)不直接使用排序算法,而是根据元素类型和数组长度选择算法。例如,

数字数组使用 C++ Std 库的快速排序函数。

非数字数组使用合并排序。

在其他一些情况下,它使用选择排序。

使用哪种算法对数组进行排序取决于数组元素的数据类型和大小。


相关文章