DEV Community

Yong Liang
Yong Liang

Posted on


How does Bubble Sort work?

What is bubble sort?

Bubble sort is an algorithm where the largest value will bubble up to the top of a list, continue sorting this way we will have an ascending sorted array or list. We will use nested loops to compare each current items with the rest of the items in the list.

Understand how to swap two elements using Javascript

//swapping function takes an array, and two indexes

 function swap2(arr, index1, index2){
     let temp = arr[index1]; //let a temp variable to hold index1's value
     arr[index1] = arr[index2]; //replace index1 with index2' value
     arr[index2] = temp;//finally replace index2 with temp, which was index1

In the ES2015 we can do swapping using this syntax

const swap = (arr, index1, index2) => {     
[arr[index1], arr[index2]] = [arr[index2], arr[index1]]

Implement bubble sort using nested array - Javascript

Sudo Code:
1.iterate the array reversely
2.create a counter variable
3.iterate the inner loop to compare each item
4.swap the items if the current item is greater
5.when swap happens, set noSwap to false so that it won't break the loop
6.when noSwap never set to false, loop breaks.

function BubbleSort(arr){
    for(let i = arr.length; i >0; i--){ 
        let noSwap = true; 
        for(let j =0; j < (i-1); j++){ 
            if(arr[j] > arr[j+1]){ 
                let temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j+1]= temp;
                noSwap = false;
    return arr;

The time complexity for bubble sort is O(n^2), making it less popular compare to merge sort and other sorting algorithms.

Top comments (0)

An Animated Guide to Node.js Event Loop

Node.js doesn’t stop from running other operations because of Libuv, a C++ library responsible for the event loop and asynchronously handling tasks such as network requests, DNS resolution, file system operations, data encryption, etc.

What happens under the hood when Node.js works on tasks such as database queries? We will explore it by following this piece of code step by step.