我有一个泡泡排序功能,我觉得它肯定会起作用。我只是不明白为什么函数只返回undefined。我检查它是否应该重新运行。如果我的reRun变量设置为true,那么它应该递归,如果它设置为false,它应该返回数组。
这是我的代码:
var bubbleSort = function(array) {
// Your code here.
var tmp;
var next;
var curr;
var reRun = false;
console.log(reRun)
for(i = 0; i < array.length; i++){
// set curr var to current item and tmp to the next one
next = array[i+1];
// console.log('next', next)
curr = array[i];
// console.log('curr', curr)
// check to see if the curr value is greater than the nex
if(curr > next){
// if it is greater than set temp to be the next val and swap
// the two positions
array[i] = next
array[i+1] = curr;
reRun = true;
}
}
if(reRun === true){
bubbleSort(array)
} else if(reRun === false){
return array;
}
};
console.log(bubbleSort([2, 1, 3])); // yields [1, 2, 3]
答案 0 :(得分:2)
你必须修补这一行:
return bubbleSort(array);
为:
Comp
这样做的原因是结果只能通过对bubbleSort的最终调用返回,然后通过以前的所有调用从不向上传播,因为你没有从那些返回任何东西。