Bubble Sort is a method to sort some list of elements by comparing two of the closest elements from left to right, one at a time. If the element on the left side is greater than the right side, then the elements will be swapped
When implemented correctly, the greater elements usually will “bubble up” to the right place, which is at the top right.
Here’s a diagram to show you how Bubble Sort works:
Implementing Bubble Sort in JavaScript
First, create a function that accepts an array as follows:
function bubbleSort(arr) {
return arr;
}
Next, you need to create a variable the identifies whether the elements are sorted or not. Let’s call this variable sorted
initialized with false
as its value:
function bubbleSort(arr) {
let sorted = false;
return arr;
}
Then, you need to create a while
loop that will execute the sorting code as long as the value of sorted
is false
. You need to change the value of sorted
to true
right below the while
statement:
function bubbleSort(arr) {
let sorted = false;
while (!sorted) {
sorted = true;
// ...
}
return arr;
}
As for the sorting code itself, you need to create a for
loop that will .. array length:
function bubbleSort(arr) {
let sorted = false;
while (!sorted) {
sorted = true;
for (i = 0; i < arr.length; i++) {
}
}
return arr;
}
For the sorting code itself, you need to create an if
statement that compares whether the current index element (arr[i]
) is greater than the element next to it (arr[i+1]
). When it is, swap the elements and change sorted
to false
to signify that a swap has happened:
function bubbleSort(arr) {
let sorted = false;
while (!sorted) {
sorted = true;
for (i = 0; i < arr.length; i++) {
if (arr[i] > arr[i + 1]) {
// swap the elements
let tmp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = tmp;
// end swapping
sorted = false;
}
}
}
return arr;
}
Because the elements triggered the swapping and the sorted
value returned to false
, the while
loop will be executed once again. This will continue until there’s no more swapping, and the value of sorted
becomes true
.
Let’s test the code with a random array:
let randomArr = [9, 8, 3, 6, 1];
let sortedArr = bubbleSort(randomArr);
console.log(sortedArr); // [1, 3, 6, 8, 9]
Feel free to test it on your own next.
Bubble Sort performance notes
As you’ve seen in the implementation above, Bubble Sort always do two things for each step:
- Compare left and right values. Always gets executed.
- Swap the values. This is optional, but in the worst-case scenario, it will swap for each value.
Bubble Sort is one of the most common topics when discussing algorithms. It’s also not recommended to sort a large amount of data using Bubble Sort because its measured time complexity is O(n²)
.
When using Bubble Sort, the number of maximum steps the algorithm may take to complete the task equals to n
to the power of 2
. As the amount of data increases, the number of steps required to perform the algorithm will increase dramatically.
For an array of 5
elements, the maximum steps Bubble Sort may take to sort it is 5*5=25
Still, Bubble Sort is like a classic book in the world of Computer Science, where everyone is required to learn about it. You may also find the topic as an interview question for some software engineering jobs.