使用算术运算符和比较运算符对数字数组进行排序

时间:2017-07-24 12:21:34

标签: javascript arrays performance sorting comparison-operators

在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]

使用哪一个更好或更快?

3 个答案:

答案 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中,您不会对该级别进行微优化。写下最清楚的东西。更好的是,使用开箱即用的解决方案。