为什么我的冒泡排序函数会跳过else并返回undefined?

时间:2016-08-20 14:34:02

标签: javascript bubble-sort

我有一个泡泡排序功能,我觉得它肯定会起作用。我只是不明白为什么函数只返回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]

1 个答案:

答案 0 :(得分:2)

你必须修补这一行:

return bubbleSort(array);

为:

Comp

这样做的原因是结果只能通过对bubbleSort的最终调用返回,然后通过以前的所有调用从不向上传播,因为你没有从那些返回任何东西。