数组中有 n
个数,比较每相邻两个数,如果前者大于后者,就把两个数交换位置;这样一来,第一轮就可以选出一个最大的数放在最后面;那么经过 n-1
(数组的 length - 1) 轮,就完成了所有数的排序。
例子:现有数组arr:[14,3,13,33,61,20,11]
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| const bubbleSort = arr => { for (let i = 0; i < arr.length - 1; i++) { let done = true; for (let j = 0; j < arr.length - i - 1; j++) { if (arr[j] > arr[j + 1]) { const temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; done = false; } } if (done) { break; } } return arr; };
|
时间复杂度: 平均时间复杂度O(n*n) 、最好情况O(n)、最差情况O(n*n)
空间复杂度: O(1)
稳定性:稳定