插入排序:一个数,与边上的数一 一作比较,从小到大排,还是从大到小排序看个人设计。
像抓扑克牌一样,拿着一张扑克,与已在手中的扑克作比较,再放入对应的位置。
看下图数组[5,12,31,9,26],比如:前面的循环我们先不看,我们试着先分析A[3]这个位置的数9:
9
↓
我们将9拎起来(9就是我们这次要特别观察的对象),但是数组的位置不要有任何变化,就像这样:最初:[5,12,31,_,26] 。排序排序,我们要有比较才可排序,所以,我们现在将我们手里的这个数9 与数组中的其他数作比较,按习惯,与这个数之前的数作比较。
9与31比:9<31,那么31要到最初9的位置上去,最初31的位置空下来了;
9
↓
[5,12,_,31,26]
9与12比:9<12,那么12要到最初31的位置上去,最初12的位置空下来了;
9
↓
[5,_,12,31,26]
9与5比:5<9,是从小到大的排序,不要动5,将9放入最初12的位置。
[5,9,12,31,26]
从小到大和从大到小的排序,无非就是前小于后还是前大于后的区别。




具体代码(可复制):
var a = [5,12,31,9,26];
for(var i = 1; i<a.length; i++){
var key = a[i];
while(key < a[i-1] && i !== -1){
a[i] = a[i-1];
i--;
}
a[i] = key
}
console.log(a)
var a = [5,12,31,9,26];
for(var i = 1; i<a.length; i++){
var key = a[i];
while(key > a[i-1] && i !== -1){
a[i] = a[i-1];
i--;
}
a[i] = key
}
console.log(a)
浙公网安备 33010602011771号