JS實現十大排序算法——冒泡排序

具體思路:

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章