# Bubble sort

JavaScript, Algorithm, Array · Dec 29, 2020

Sorts an array of numbers, using the bubble sort algorithm.

• Declare a variable, `swapped`, that indicates if any values were swapped during the current iteration.
• Use the spread operator (`...`) to clone the original array, `arr`.
• Use a `for` loop to iterate over the elements of the cloned array, terminating before the last element.
• Use a nested `for` loop to iterate over the segment of the array between `0` and `i`, swapping any adjacent out of order elements and setting `swapped` to `true`.
• If `swapped` is `false` after an iteration, no more changes are needed, so the cloned array is returned.
```const bubbleSort = arr => {
let swapped = false;
const a = [...arr];
for (let i = 1; i < a.length; i++) {
swapped = false;
for (let j = 0; j < a.length - i; j++) {
if (a[j + 1] < a[j]) {
[a[j], a[j + 1]] = [a[j + 1], a[j]];
swapped = true;
}
}
if (!swapped) return a;
}
return a;
};```
`bubbleSort([2, 1, 4, 3]); // [1, 2, 3, 4]`

## More like this

• ### JavaScript Arrays

Master array manipulation in JavaScript with this ES6 snippet collection.

Collection · 210 snippets

• ### Heap sort

Sorts an array of numbers, using the heapsort algorithm.

JavaScript, Algorithm · Dec 28, 2020

• ### Bucket sort

Sorts an array of numbers, using the bucket sort algorithm.

JavaScript, Algorithm · Dec 29, 2020

• ### Quick sort

Sorts an array of numbers, using the quicksort algorithm.

JavaScript, Algorithm · Oct 13, 2021