0%

冒泡排序

数组中有 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)
稳定性:稳定