sort()如何在javascript中工作?

时间:2012-06-29 06:07:51

标签: javascript sorting

var numArray = [4,2,5,3];
numArray.sort(function(a,b){
  console.log("a:" + a + ", b:" + b);
  return a-b;
});

三个可能的返回数字是:< 0(小于0),0或> 0(大于0):

 Less than 0: Sort "a" to be a lower index than "b"
 Zero: "a" and "b" should be considered equal, and no sorting performed.
 Greater than 0: Sort "b" to be a lower index than "a".

我在控制台上得到这样的内容

    a:4, b:2
    a:4, b:5
    a:5, b:3
    a:2, b:3
    a:4, b:3
    [2, 3, 4, 5]

如上所示,我可以知道a和b的值是如何变化的吗?

  

第一步      a = 4,b = 2。在这种情况下,它将交换。      然后数组变为[2,4,5,3];

     

第二步      a = 4,b = 5。在这种情况下,项目保持不变。      然后数组变为[2,4,5,3];

     

第三步      a = 5,b = 3。在这种情况下,它将交换。      然后数组变为[2,4,3,5];

     

直到这一步它没关系。但在那之后a和b的值如何变为2和3>分别代替2和4.

任何人都可以帮助我?

提前致谢

1 个答案:

答案 0 :(得分:2)

无法保证sort方法使用简单的比较和交换算法。

您的浏览器更有可能使用merge sort之类的内容,但具体的算法取决于浏览器和版本。

由于Firefox是开源的,您可以通过查看source code来查看排序是如何实现的。它使用合并排序。