![](https://box.kancloud.cn/91b76e8e4dab9b0cad9a017d7dd431e2_811x505.jpg)
思路:
1. 从第2个元素开始向后依次取出一个元素,记作 a
2. a 依次和它前面的每一个元素进行比较
3. 如果前面的某个元素大于 a,那么这个大的元素就向后移一位
4. 当遇到一个不大于 a 的元素时,就把 a 放到这个元素的后面
# JavaScript
~~~
function insertSort(arr) {
let tmp
for(let i=1;i<arr.length;i++) {
// 取出第 i 个元素
tmp = a[i]
// 循环前面的元素进行比较
for(var j=i-1;j>=0;j--) {
// 如果前面的元素大于这个元素
if(a[j]>tmp) {
// 把前面这个元素向后移动一位
a[j+1] = a[j]
} else {
break
}
}
// 把这个元素放到不小于它的元素后面
a[j+1]=tmp
}
return arr
}
~~~
可以简写为
~~~
function insertSort(arr) {
for(let i=1;i<arr.length;i++) {
// 取出第 i 个元素
let tmp = a[i]
// 循环前面的元素进行比较
for(var j=i-1;j>=0&&a[j]>tmp;j--) {
a[j+1] = a[j]
}
// 把这个元素放到不小于它的元素后面
a[j+1]=tmp
}
return arr
}
~~~