# 原理
將整個未排序的數列分為兩個部分:一部分是已經排好序的;一部分是沒有排好序的。每次都從還未排好序的數列中取出一個數,插入到已經排好序的數列之中,直到未排序的數列為空
在排序過程中,一般默認將數列的第一個數作為已經排序好的數列,將剩余作為未排序好的數列
數列:`[ 9, 4, 5, 1, 3, 2, 6, 8, 7] `
將整個數列分為兩部分:
已排序好的:9
未排序好的:`4 5 1 3 2 6 8 7`
從未排序好的中取出一個數,插入到排序好的數列中
已排序好的:`4 9`
未排序好的:`5 1 3 2 6 8 7`
再從未排序好的中取出一個數,插入到排序好的數列中
已排序好的:`4 5 9 `
未排序好的:`1 3 2 6 8 7`
依次類推,直到所有數據都排序完成。
# 代碼
```
let array = [9, 4, 5, 1, 3, 2, 6, 8, 7]
let insertSort = array => {
let temp, j
for (let i = 1, length = array.length; i < length; i++) {
temp = array[i]
j = i - 1
while (j >= 0 && array[j] > temp) {
array[j + 1] = array[j]
j--
}
array[j + 1] = temp
}
return array
}
console.log(insertSort(array))
```