js排序算法基礎--冒泡排序

冒泡排序

冒泡排序就是比較任何兩個相鄰的項,若是第一個比第二個大,則交換它們。元素項向上移動至正確的順序,就好像氣泡上升至表面同樣,冒泡排序所以得名。數組

冒泡排序實現: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)
            }
        }
    }
}
相關文章
相關標籤/搜索