gpt4 book ai didi

javascript - 冒泡排序只对数组的一部分进行排序

转载 作者:行者123 更新时间:2023-11-30 10:57:43 24 4
gpt4 key购买 nike

我正在尝试使用冒泡排序对这个数组进行排序,

var blocks = ["50", "90", "70", "40", "190", "110", "300", "30", "60", "245"];

但由于某种原因,当我在排序后打印数组时,我只得到 110,190,245,30,300,40,50,60,70,90。

排序代码如下

      $("#bubble").click(function(){

for(var i=0; i<blocks.length; i++){
for(var j=0; j<blocks.length-i-1; j++){
if(blocks[j]> blocks[j+1]){
var temp = blocks[j];
blocks[j] = blocks[j+1];
blocks[j+1] = temp;
}
}
}
var x = blocks.toString();
$("#blocks_container").append(x);

});

最佳答案

您正在对字符串而不是数字进行排序。按词法值比较时,比较第一个字符,如果相同则比较第二个字符,依此类推。在这种情况下,10020“少”,因为 1 出现在 2 之前。

如果您想通过数值比较项目,请使用 + 运算符将它们转换为数字:

+blocks[j] > +blocks[j + 1]

例子:

var blocks = ["50", "90", "70", "40", "190", "110", "300", "30", "60", "245"];

for (var i = 0; i < blocks.length; i++) {
for (var j = 0; j < blocks.length - i - 1; j++) {
if (+blocks[j] > +blocks[j + 1]) {
var temp = blocks[j];
blocks[j] = blocks[j + 1];
blocks[j + 1] = temp;
}
}
}

console.log(blocks);

关于javascript - 冒泡排序只对数组的一部分进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59344941/

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