在Javascript中有两个解决方案来编写sort()
函数以按升序排序数字数组。
var numbers = [2, 10, 2, 6, 4];
// first solution
numbers.sort((a, b) => a - b); // [2, 2, 4, 6, 10]
// second solution
numbers.sort((a, b) => a > b); // [2, 2, 4, 6, 10]
使用哪一个更好或更快?
答案 0 :(得分:3)
sort
回调必须返回值< 0,0或> 0,不是布尔值。使用>
只是不正确。它将如何影响排序算法的性能或正确性取决于实现(即不同的引擎可能会显示不同的结果)。
答案 1 :(得分:0)
就性能而言,我已经完成了jsPerf代码段,布尔运算符似乎更快。
PD:使用谷歌浏览器Versión59.0.3071.115(Build oficial)(64位)
答案 2 :(得分:-1)
在C中,我们总是倾向于a - b
超过a > b
,因为后者可能会因分支预测器失败而导致管道转储。
但是,在Javascript中,您不会对该级别进行微优化。写下最清楚的东西。更好的是,使用开箱即用的解决方案。