
思路:
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
}
~~~