javascript - 为什么我得到一些未定义的项目而不是排序数组?
问题描述
function bubble(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = arr[temp];
}
}
}
return arr;
}
console.log(bubble([5, 12, 2, 4, 10]));
我的输出是
[2, undefined, undefined, 4, 10]
我不知道为什么我得到undefined
而不是排序数组。我也查看了其他一些代码,但没有成功。
解决方案
您需要temp
进行交换。见评论。
function bubble(arr) {
var len = arr.length;
for (var i = 0; i < len; i++) {
for (var j = 0; j < len; j++) {
if (arr[j] > arr[j + 1]) {
var temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp; // take just temp
}
}
}
return arr;
}
console.log(bubble([5, 12, 2, 4, 10]));
推荐阅读
- python - python中的循环问题-相同数据的多个条目
- php - 在 Apache 中启用 PHP
- matlab - 我正在研究一个示例模糊逻辑模型,一旦我通过输入,我就会收到警告
- python - 如何让包在anaconda virtualenv中导入代码?
- delphi - SOAP WSDL 格式化 (THTTPRIO)
- c++ - 错误:从 'const char*' 到 'char*' 的无效转换调试作业问题
- django - Django Admin:如何动态设置 list_per_page
- c++ - int i = f1() * f2() 的未定义行为
- javascript - 遍历 JSON 的每个键
- java - 如何将文件中的对象添加到 ArrayList 中?获得 EOFException