为啥会这样? (冒泡排序)[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中的第一个元素?
为啥我们在冒泡排序算法的内循环中使用 `length-i-1`