gpt4 book ai didi

javascript - 分解如何对数组中的数字进行排序

转载 作者:行者123 更新时间:2023-12-03 07:20:56 26 4
gpt4 key购买 nike

我要过去this排序教程,我在理解它时遇到问题。当将排序函数传递给 .sort() 时,我发现规则如下。

  • 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".

我正在测试这个片段:

var myarray=[25, 8, 7, 41];
console.log(myarray);
console.log(myarray.sort(function(a,b) {
console.log("a : " , a , " b : " , b, " oper : " , b-a, " arr ");
return b -a
}));

主要部分是return b -a,我认为这应该按降序返回数组,因为如果b大于a它将被放置在较低的索引中。我想我很难理解“较低”的确切含义。这是否意味着 b 直接位于 a 之前,还是 b 位于数组的开头?

这就是我感到困惑的地方。代码的结果是:

[25, 8, 7, 41]
a : 25 b : 8 oper : -17 arr
a : 8 b : 7 oper : -1 arr
a : 7 b : 41 oper : 34 arr
a : 25 b : 41 oper : 16 arr
[41, 25, 8, 7]

这只是我的想法

由于前 2 次比较产生负数 a 位于 b 之前,因此在前 2 次比较结束时,数组应该类似于 [25, 8,7,41](无变化)。

然后下一个比较是一个正数(34),所以我认为 b 位于 a 之前,所以现在将是 [25,8,41 ,7] 那么我不明白为什么接下来要比较 25 和 41 a = 25 和 b = 41 怎么样?你能告诉我如何查看正在转换的数组吗?我尝试这样做,但没有成功。提前致谢。

如果您看到另一个问题详细解释了这种排序分割,我将很乐意结束这个问题。我并不是想问一些无用的问题。大多数人只是解释一般如何排序,而不是分解它。谢谢

最佳答案

So is there a way to show the sort process? like when you do a for loop you can console.log the activity your looping. can you console.log the steps that it takes to sort the array? I guess not.

使用 Math.min() 的方法, Math.max() ; Array.prototype.splice()

// `arr` : input array
function _sort(arr) {
// declare `min` variable
// `res` : array that will be returned
var min = null, res = []; console.log("step 1", min, res);
// while `arr` contains elements
while (arr.length) {
// set `min` to smallest number in `arr`
min = Math.min.apply(Math, arr); console.log("step 2", min);
// push `min` to `res` array
res.push(min); console.log(res);
// remove `min` element from `arr` array
arr.splice(arr.indexOf(min), 1); console.log("step 3", arr);
}
// return `res` array
return res
}

console.log("step 4", _sort([27, 1, 3, 14]))

关于javascript - 分解如何对数组中的数字进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36213454/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com