为啥会这样? (冒泡排序)[JavaScript]

Posted

技术标签:

【中文标题】为啥会这样? (冒泡排序)[JavaScript]【英文标题】:Why is this happening? (Bubble Sort) [JavaScript]为什么会这样? (冒泡排序)[JavaScript] 【发布时间】:2016-03-07 03:23:24 【问题描述】:

我目前在使用 javascript 中的冒泡排序程序时遇到了一点问题,我似乎遇到的问题是,例如,当我给数组值从 1 到 10 时,它会像这样组织它们:1,10 ,2,3,4,5,6,7,8,9。

这是我的代码:

function bubble()

var array = [10];
var j=0;
var i=0;

for(i=0; i<10; i++)

array[i] = prompt("Inset a Number");


  for (i=0; i < 10; i++)

    for (j=0; j < 10; j++)

        if(array[j+1] < array[j])

            temp = array[j];
            array[j] = array[j+1];
            array[j+1] = temp;
        
    
   

alert(array);


    </script>

【问题讨论】:

它将数据视为字符串并正确排序。 您需要从parseInt()prompt() 输入您的输入 或者只是减去0。例如prompt("Inset a Number")-0 非常感谢你们,伙计们!问题似乎解决了。 还有一个错误:当j==9 array[j+1] 未定义时 【参考方案1】:

您当前正在比较字符串。因为prompt会返回一个字符串,所以需要先转换成int才能正确比较。

array[i] = parseInt(prompt("Inset a Number"));

【讨论】:

【参考方案2】:

数字实际上是字符串,因为提示值是作为字符串返回的。 您需要将字符串转换为 int,如下所示:

array[i] = parseInt(prompt("Inset a Number"));

【讨论】:

【参考方案3】:

它将数据视为字符串并正确排序。您需要从 prompt() 中解析您的输入,或者只需减去 0。例如,prompt("Inset a Number")-0。

【讨论】:

以上是关于为啥会这样? (冒泡排序)[JavaScript]的主要内容,如果未能解决你的问题,请参考以下文章

C-为啥Struct数组的冒泡排序会跳过Array中的第一个元素?

冒泡排序编程中 j为啥要减1

为啥我们在冒泡排序算法的内循环中使用 `length-i-1`

当我使用冒泡排序时,为啥我将数组中的最高值作为我的第一个元素?

一篇文章搞定javascript冒泡排序

为啥冒泡排序被称为冒泡排序?