## DEV Community is a community of 876,661 amazing developers

We're a place where coders share, stay up-to-date and grow their careers.

Sudharsanan Ravichandran

Posted on

# Bubble Sort

Hello Dev Community,

Happy to share my very first article. I recently started with #100DaysOfCode on Twitter. I got to meet awesome developers who were very good & unique.

I will try to go through one of the sorting algorithms (easiest to catch) that I learnt so far in the past few days.

Before we move on any further, I just want to say, it's easy!

You can go through this video from HackerRank to get a hint on how it works?

In Bubble Sort, we compare two of the adjacent element and swap their places. Upon one successful iteration over the elements, you will get the largest of the number on the right-hand side of the array. We will not touch the sorted element (right-hand side) on the successive iteration.
You have to repeat the same until your array is sorted.

Below is a pure function based implementation

``````function bubbleSort(iterarr){

if(!Array.isArray(iterarr)){ // Checking given input is a valid array
console.error('Not an array!');
return;
}

let arr = [...iterarr]; // Copied the array elements using spread operator

if(arr.length == 1){
return arr; //If array has only one element it's already sorted
}

let isSorted = false; //Assuming the array is not sorted

while(!isSorted){ //Loop breaks if the array is sorted
isSorted = true; //Assuming the array is sorted
for(let i = 0; i < arr.length - 1; i++){ //Loop for iterating through elements
if(arr[i] > arr[i+1]){ //Trying to check which of the element is bigger current(i) or the next element(i+1)
let temp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = temp; //Above 3 lines does the swapping using the temp variable
isSorted = false; //If swap happens that means array is not sorted yet
}
}
}
return arr;
}
``````

Though this is not an optimal sorting method, it's one of the easiest.

Thanks,
Sudharsanan Ravichandran

## Discussion (2)

pentacular

A little abstraction can go a long way.

``````const order = (array, index) => {
if (array[index] > array[index + 1]) {
// These two elements are unordered, so swap them.
[array[index], array[index + 1]] = [array[index + 1], array[index]];
// Note that a swap occurred.
return 1;
} else {
// Note that no swap occurred here.
return 0;
}
}

const bubbleSort = (array) => {
for (;;) {
let swapped = 0;
for (let index = 0; index < array.length - 1; index++) {
// Attempt to order each pair in turn, noting if a swap occurred.
swapped |= order(array, index);
}
if (swapped === 0) {
// If no swaps occurred the array is totally ordered.
return array;
}
}
}
``````
Sudharsanan Ravichandran • Edited on

Thanks a lot for sharing your code, I can see a lot of improvements needed on my code and modified my version too ππΎπ