JavaScript Array#sort() 函数是一种通用的排序机制,支持基于提供的参数的各种排序操作和功能。但是没有参数的普通排序采用什么引擎呢?
仔细查看 WebKit 源代码(Chrome 和 Safari 使用),我们发现算法的选择取决于排序的类型数组:
数字数组或包含基本类型的数组: 这些数组使用 C std::qsort 函数进行排序,该函数通常实现快速排序的变体(通常是内部排序)。
非数字类型的连续数组:这些数组将转换为字符串并使用归并排序(如果可能的话)或 qsort(否则)进行排序。
其他类型(非连续数组和关联数组) arrays): WebKit 使用选择排序(最小排序),或者在某些情况下,通过 AVL 树对这些类型进行排序。由于文档不明确,有必要跟踪代码路径来确定每种类型使用的特定算法。
值得注意的是,代码包含一条注释,建议使用基数排序来更快地对字符串化数组进行排序,但是此评论强调了对基数排序运行时复杂性的误解。
以上是JavaScript 的 Array.sort() 使用什么排序算法?的详细内容。更多信息请关注PHP中文网其他相关文章!