在 JavaScript(在其他地方有些适用)中,您不知道您的代码在哪个目标实现上运行,有没有一种方法可以检测底层排序算法 (of Array.sort
) 是否稳定,只知道它遵循规范?
我可以在 webkit (1) (2)中找到 2 个测试,但是这些测试的可靠性如何?(这个检查可以用PCP完成吗?)我正在寻找一个数学上合理的解决方案。
这是一个棘手的问题,因为更高级的排序算法可以根据源数组的长度(如 Timsort)更改子算法。我一直很困惑,因为我运行的每个测试都显示谷歌浏览器的排序是稳定的,但我看到的所有文档都说它不稳定(来源会告诉你原因)。
(通常,我使用这种策略来使我的排序稳定;它对性能的影响很小但有时很明显)
各种实现中排序的源代码: