Reputation: 109
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
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