常用演算法-插入排序

庫奇發表於2019-03-08

直接程式碼先:

insertSort: function(arr) {
    const startTime = new Date().getTime()
    for(let i = 1; i < arr.length; i++) {
      for(let j = i;j > 0 && arr[j] < arr[j-1];j--) {
        [arr[j-1],arr[j]] = [arr[j],arr[j-1]]
      }
    }
    const endTime = new Date().getTime()
    console.log(`插入排序-耗時${endTime - startTime}`)
    return arr
  }
複製程式碼

插入排序:從陣列的第二個元素開始遍歷,依次和前面的陣列相比較,一直到陣列的第一位元素,期間倆個相鄰的元素進行相比較,知道條件不滿足是推出,此時表示當前元素應當處於當前這個位置。

通過下面步驟來解釋一波

arr = [3, 2, 1, 4, 8, 6, 7, 9, 5]

-> 從2開始遍歷,找到3,發現2<3就替換位置

arr = [2, 3, 1, 4, 8, 6, 7, 9, 5]

-> 從1開始遍歷,找到3,發現1<3就替換位置

arr = [2, 1, 3, 4, 8, 6, 7, 9, 5]

->指標繼續向前,1和2之間比較 1<2替換倆個位置

arr = [1, 2, 3, 4, 8, 6, 7, 9, 5]

->從4開始遍歷,找到3,發現4>3直接不做操作

....

arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]

執行程式碼參考:https://github.com/wangzhenggui/Common-algorithm

相關文章