--- title: Bubble sort type: snippet tags: [algorithm,array] cover: budapest-palace dateModified: 2020-12-29T12:18:58+02:00 --- 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. ```js 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; }; ``` ```js bubbleSort([2, 1, 4, 3]); // [1, 2, 3, 4] ```