devesh
devesh

Reputation: 109

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

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.

Upvotes: 3

Views: 41

Answers (1)

Nina Scholz
Nina Scholz

Reputation: 386730

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

Upvotes: 5

Related Questions