# 原理
将整个未排序的数列分为两个部分:一部分是已经排好序的;一部分是没有排好序的。每次都从还未排好序的数列中取出一个数,插入到已经排好序的数列之中,直到未排序的数列为空
在排序过程中,一般默认将数列的第一个数作为已经排序好的数列,将剩余作为未排序好的数列
数列:`[ 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))
```