// Bubble sort is a sorting algorithm that sorts data in an array by looping through the array
// and checking if the current item is greater than the next item.
// It will continue to loop through, swapping the items until they are sorted.
// If no swaps are made during a pass, then the data is sorted and we break the loop.
const bubbleSort = (arr) => {
// This variable is used to either continue or stop the loop
let continueSorting = true;
// while continueSorting is true
while (continueSorting) {
// Here we are setting continueSorting to false. Because below we check to see if a swap is made,
// if a swap is made, then we continue sorting. If no swaps were made, then were are done sorting,
// and stop our while loop.
continueSorting = false
// loop through the arr from 0 to next to last
for(let i = 0; i < arr.length - 1; i++) {
// check if we need to swap
if(arr[i] > arr[i + 1]) {
// swap
let temp = arr[i];
arr[i] = arr[i + 1];
arr[i + 1] = temp;
// since a swap was made, we want to continue sorting
continueSorting = true;
}
}
}
// After all swaps have been made, then we return our sorted array
return arr;
}
// Tests
console.log(bubbleSort([9, 8, 7, 6, 5, 4, 3, 2, 1] ));
console.log(bubbleSort([1, 2, 3, 4, 5, 6, 7, 8, 9] ));