具體思路:
- 循環體內部每次執行一次比較,比較相鄰兩數的大小。
- 內層循環控制兩兩比較的次數,內層循環跑一遍,總能把最大或者最小的數冒泡到最右邊
- 外層循環控制冒泡次數,也就是內部循環跑的趟數,爲數據規模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);
穩定性:穩定;