冒泡排序就是比較任何兩個相鄰的項,若是第一個比第二個大,則交換它們。元素項向上移動至正確的順序,就好像氣泡上升至表面同樣,冒泡排序所以得名。數組
冒泡排序實現:spa
function bubbleSort(array){ var length = array.length; for (var i = 0; i < length; i++) { //控制數組通過了多少輪排序 for (var j = 0; j < length - 1; j++) { //進行了當前項和下一項的比較 if (array[j] > array[j + 1]) { swap(array, j, j + 1) } } } }; function swap (array, index1, index2) { var aux = array[index1]; array[index1] = array[index2]; array[index2] = aux; //ES6寫法 [array[index1], array[index2]] = [array[index2], array[index1]]; }
咱們能夠看到外層的循環主要是控制了數組中通過了多少輪循環(數組中的,每一項都通過一輪,輪數和數組的長度是一致的)。而後內循環將從第一位迭代到倒數第二位,內循環實際上進行當前項與下一項的比較,若是當前項比下一項大,則交換它們。code
咱們還能夠發現當外循環完成一輪,最後一項就已經在正確的位置(即爲最大項),然而在後續的循環中,還一直進行着比較,因此咱們能夠改進一下blog
思路:排序
function modifiedBubbleSort() { var length = array.length; for (var i = 0; i < length; i++) { for (var j = 0; j < length - 1 - i; j++) { if (array[j] > array[j + 1]) { swap(array, j, j + 1) } } } }