Why am I getting some undefined items instead of sorted array?

Viewed 38

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]));

My output is

[2, undefined, undefined, 4, 10]

I do not know why I am getting undefined instead of sorted array. I looked into some other code as well but did not work out.

1 Answers

You need to take temp for swapping. See comment.

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]));

Related