【发布时间】:2017-07-18 19:18:52
【问题描述】:
为了好玩,我在 CheckiO 上启动了一些 JavaScript。对于中值任务,我遇到了问题。首先,我尝试使用for 循环对给定数组进行排序。为了在循环期间查看数组,我使用了console.log。
for (var i = 0; i < data.length-1; i++) {
if (data[i] > data[i+1]) {
var temp = data[i];
data[i] = data[i+1];
data[i+1] = temp;
i = 0;
}
console.log(data);
}
问题是当只有一个数字在错误的位置时;排序停止,只打印出几次数组。 例如:
median([5,4,3,2,1])
[ 4, 5, 3, 2, 1 ]
[ 4, 3, 5, 2, 1 ]
[ 4, 3, 5, 2, 1 ]
[ 4, 3, 2, 5, 1 ]
[ 4, 2, 3, 5, 1 ]
[ 4, 2, 3, 5, 1 ]
[ 4, 2, 3, 5, 1 ]
[ 4, 2, 3, 1, 5 ]
[ 4, 2, 3, 1, 5 ]
[ 4, 2, 1, 3, 5 ]
[ 4, 1, 2, 3, 5 ]
[ 4, 1, 2, 3, 5 ]
[ 4, 1, 2, 3, 5 ]
[ 4, 1, 2, 3, 5 ]
对这种行为有什么解释吗?谢谢!
【问题讨论】:
-
排序需要手动滚动还是可以使用
data.sort();并完成? -
我修改了一些答案,以确保您理解并可以看到您的代码和我的代码有何不同。我认为您对这种排序循环的想法既简单又好,但需要一点调试帮助才能达到终点。我希望我的回答不仅能提供解决方案,还能让您自己了解如何在控制台中看到错误并更好地调试。
-
idnamzciv,请选择一个答案。已经提供了许多很棒的解决方案,并且通过我的测试,所有解决方案都将提供合适的解决方案。
标签: javascript arrays loops sorting numbers