直接程式碼先:
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