具体思路:
- 循环体内部每次执行一次比较,比较相邻两数的大小。
- 内层循环控制两两比较的次数,内层循环跑一遍,总能把最大或者最小的数冒泡到最右边
- 外层循环控制冒泡次数,也就是内部循环跑的趟数,为数据规模n。
function bubblingSort(array) {
for (let i = 0; i < array.length - 1; i++) {
for (let j = 0; j < array.length - 1 - i; j++) {
if (array[j] > array[j + 1]) {
let z = array[j];
array[j] = array[j + 1];
array[j + 1] = z;
}
}
}
return array;
}
相关术语:
稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;
不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;
内排序:所有排序操作都在内存中完成;
外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存的数据传输才能进行;
时间复杂度: 以数据规模n为基准,一个算法执行所耗费的时间。
空间复杂度: 以数据规模n为基准,一个算法执行所需内存的大小。
冒泡排序时空复杂度及稳定性:
平均时间复杂度:o(n2);
空间复杂度:o(1);
稳定性:稳定;