| 17 | * Using 2 for loops. |
| 18 | */ |
| 19 | export function bubbleSort(items) { |
| 20 | const length = items.length |
| 21 | let noSwaps |
| 22 | |
| 23 | for (let i = length; i > 0; i--) { |
| 24 | // flag for optimization |
| 25 | noSwaps = true |
| 26 | // Number of passes |
| 27 | for (let j = 0; j < i - 1; j++) { |
| 28 | // Compare the adjacent positions |
| 29 | if (items[j] > items[j + 1]) { |
| 30 | // Swap the numbers |
| 31 | ;[items[j], items[j + 1]] = [items[j + 1], items[j]] |
| 32 | noSwaps = false |
| 33 | } |
| 34 | } |
| 35 | if (noSwaps) { |
| 36 | break |
| 37 | } |
| 38 | } |
| 39 | |
| 40 | return items |
| 41 | } |
| 42 | |
| 43 | /** |
| 44 | * Using a while loop and a for loop. |