DEV Community

Cover image for Bubble Sort Algorithm in JavaScript
Pranesh Chowdhury for Pranesh CodeCraft

Posted on • Edited on

2 2 1

Bubble Sort Algorithm in JavaScript

Bubble sort is an algorithm for sorting elements by repeatedly comparing adjacent pairs and swapping them if they are in the wrong order until the entire list is sorted.

We will sort based on ascending order.

Image description

How Bubble Sort Works:

  • Traverse from the left and compare adjacent elements and the higher one is placed on the right side.
  • The largest element is moved to the rightmost end at first.
  • Then continue to find the second largest and place it until the data is sorted.

Algorithm:

bubbleSort(array)
  for i <- 1 to indexOfLastUnsortedElement-1
    if leftElement > rightElement
      swap leftElement and rightElement
end bubbleSort
Enter fullscreen mode Exit fullscreen mode

Picture from - Tech Guides

JavaScript Implementation:

let arr = [12, 8, -5, 6, -8, 2];        // input array. 

bubbleSort(arr);            // bubbleSort() function call. 

function bubbleSort(arr){
    let n = arr.length;     // 'n' is array size. 

    for (let j=0; j<n-1; ++j){
        for (let i=0; i<n-j-1; ++i){
            if (arr[i] > arr[i+1]){
                let temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;
            }
        }
    }

    console.log(arr);           // Print the Sorted Arry. 
}
Enter fullscreen mode Exit fullscreen mode

Output:

[ -8, -5, 2, 6, 8, 12 ]
Enter fullscreen mode Exit fullscreen mode

How can we optimize the bubble sort algorithm?

Thinking guy
All the comparisons are made in the above algorithm even if the array is already sorted. This increases the execution time.
We can optimize by checking if the elements are sorted or not. The value of swapped is set to 1 (true) if there occurs a swapping of elements. Otherwise, it is set to 0 (false).

This will reduce the execution time to optimize the bubble sort.

Optimized Bubble Sort Algorithm

bubbleSort(array)
  swapped <- false
  for i <- 1 to indexOfLastUnsortedElement-1
    if leftElement > rightElement
      swap leftElement and rightElement
      swapped <- true
end bubbleSort
Enter fullscreen mode Exit fullscreen mode
let arr = [12, 8, -5, 6, -8, 2];        // input array. 

bubbleSort(arr);            // bubbleSort() function call. 

function bubbleSort(arr){
    let swapped = 0;        // check if swapping occurs

    let n = arr.length;     // 'n' is array size. 

    for (let j=0; j<n-1; ++j){
        for (let i=0; i<n-j-1; ++i){
            if (arr[i] > arr[i+1]){
                let temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp;

                swapped = 1;
            }
        }
        // no swapping means the array is already sorted. so no need for further comparison. 
        if (swapped == 0) {
            break;
        }
    }

    console.log(arr);           // Print the Sorted Arry. 
}
Enter fullscreen mode Exit fullscreen mode

Output:

[ -8, -5, 2, 6, 8, 12 ]
Enter fullscreen mode Exit fullscreen mode

Time Complexity: O(N^2)

If you found this helpful, please consider giving it a like. It means a lot to me. Thanks for Reading 🩵⭐

Image description

Reference:

AWS Q Developer image

Your AI Code Assistant

Automate your code reviews. Catch bugs before your coworkers. Fix security issues in your code. Built to handle large projects, Amazon Q Developer works alongside you from idea to production code.

Get started free in your IDE

Top comments (0)

Billboard image

Create up to 10 Postgres Databases on Neon's free plan.

If you're starting a new project, Neon has got your databases covered. No credit cards. No trials. No getting in your way.

Try Neon for Free →

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay