JavaScript 排序函数如何工作(作为一种算法)? [复制]

2024-04-10

JavaScript带参数的排序函数 http://www.javascriptkit.com/javatutors/arraysort.shtml允许传入一个函数。

例如:

var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]

代码是怎么回事

function(a,b){
    return a - b
}

被解释为升序吗?应该分为三种情况< 0 , == 0, and > 0,但是当a and b可以是任何东西吗?

谢谢你!


var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){return a - b}) //Array now becomes [7, 8, 25, 41]

只需将其更改为

var myarray=[25, 8, 7, 41]
myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]

在控制台日志中尝试上述代码后,您将看到以下结果

var myarray=[25, 8, 7, 41]
    myarray.sort(function(a,b){console.log("comparing " + a + ", " + b);return a - b}) //Array now becomes [7, 8, 25, 41]

被解释为升序吗?它应该分为三种情况, 0 ;但是当 a 和 b 可以是任何值时,这有什么意义呢?

第一次比较:25,8

现在,让我们来解答您对它如何选择 a、b 值的疑问。当您运行代码时,您会看到第一个比较是在 25,8 之间进行的,如果结果为正,则意味着 8 较小。所以它只是将其重新排序为 8、25。

第二个比较:25,7

接下来比较 25 和 7 ,因为如果结果为负数,则将第三个数字放在 25 后面,并对这三个数字进行排序。

但情况不同了,现在结果再次呈阳性。该数组仍将自身重新排序为

8, 7, 25

之后它再次执行测试,直到发现条件为阳性。所以现在它比较 8、7,结果又是负数。

该数组再次重新排序为

7, 8, 25

第三个比较:25、41

现在,在最后一次比较中,结果为正,这意味着 41 大于 25。

因此数组将自身重新排序为

7,8,25,41
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 排序函数如何工作(作为一种算法)? [复制] 的相关文章

随机推荐