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.
任何人都可以帮助我?
提前致谢
答案 0 :(得分:2)
无法保证sort方法使用简单的比较和交换算法。
您的浏览器更有可能使用merge sort之类的内容,但具体的算法取决于浏览器和版本。
由于Firefox是开源的,您可以通过查看source code来查看排序是如何实现的。它使用合并排序。