根據維基百科:
冒泡排序又稱為泡式排序,是一種簡單的排序算法。它重復地走訪過要排序的數列,一次比較兩個元素,如果他們的順序錯誤就把他們交換過來。走訪數列的工作是重復地進行直到沒有再需要交換,也就是說該數列已經排序完成。這個算法的名字由來是因為越小的元素會經由交換慢慢“浮”到數列的頂端。
冒泡排序的算法穩定性:穩定排序算法。
時間復雜度:O(n^2)。
冒泡排序的思想是,比較相鄰兩個數,如果前者大于后者,就把兩個數的位置相互交換;如此這般,第一輪就可以選出一個最大的數放在最后面;經過n-1輪就可以完成所有數的排序。
function bubbleSort (arr) { var len = arr.length while (len > 0) { for (var i = 0; i < len - 1; i++) { if (arr[i] > arr[i + 1]) { var temp = arr[i] arr[i] = arr[i + 1] arr[i + 1] = temp } } len-- } return arr }
或者:
function bubleSort (arr) { const len = arr.length let tempVal for (let i = len; i > 0; i--) { for (let j = 0; j < i; j++) { if (arr[j] > arr[j + 1]) { tempVal = arr[j] arr[j] = arr[j+1] arr[j+1] = tempVal } } } }
假定數組長度為n,可以看到,一共會執行n(n-1) + (n-1)(n-2) + … + (2)*(1)次循環。