Javascript實現簡單的冒泡排序、插入排序

數組值交換方法

將數組arr[i]、arr[j] 進行值交換javascript

function exchange (arr, i, j) { // 數組值交換
    [arr[i], arr[j]] = [arr[j], arr[i]] // es6結構賦值語法
}
複製代碼

冒泡排序

動圖理解

代碼實現

function bubbleSort (arr) {
    let list = [...arr]
    let len = list.length
    for (i=0; i<len - 1; i++) {
        for (j=0; j<len - 1 - i; j++) { // 第一輪比較已將最大值放到了數組最後一位,因此每次循環都須要減去i
            if (list[j] > list[j+1]) { // 前一位大於後一位交換位置
                exchange(list, j, j+1)
            }
        }
    }
    return list
}
複製代碼

冒泡排序,顧名思義,排序過程就像水下的氣泡冒出過程同樣,氣泡上浮過程當中慢慢地變大;經過比較相鄰兩個數,若是左邊大於右邊,則相互調換位置,交換完後往前進一步,繼續比較;將較大的數往右邊放html

插入排序

動圖理解

代碼實現

function insertionSort (arr) {
    let list = [...arr]
    let len = list.length
    for (i=1; i<len; i++) { // 取數組第二位進行插入比較
        for (j=i; j>0; j--) { // 從數組第二位開始,逐一跟前一位比較
            if (list[j] < list[j-1]) { // 當前一位大於後一位,將調換位置,繼續往前比較
                exchange(list, j, j-1)
            } else { // 當前一位小於後一位就中止本次的比較,進行下一位數的插入比較
                break
            }
        }
    }
    return list
}
複製代碼

插入排序,過程就很像玩撲克牌的擺牌動做,抽出一張牌(算法是抽出第二張開始比較),往左依次比較,若是比目標小的就插入其左邊,直至排序完畢java

結果測試

let arr = [2, 4, 6, 1, 9, 10, 20, 7, 9, 8]

console.log('要排序的數組:' + arr) // 要排序的數組:2,4,6,1,9,10,20,7,9,8

console.log('冒泡排序結果:' + bubbleSort(arr)) // 冒泡排序結果:1,2,4,6,7,8,9,9,10,20

console.log('插入排序結果:' + insertionSort(arr)) // 插入排序結果:1,2,4,6,7,8,9,9,10,20

複製代碼

參考

冒泡排序參考:https://www.runoob.com/w3cnote/bubble-sort.htmles6

插入排序參考:https://www.runoob.com/w3cnote/insertion-sort.html算法

相關文章
相關標籤/搜索