直接插入排序是稳定的排序方法。
基本思想:
假设待排序的记录存放在数组array[1..n]中,将第一个数取出来,自己array[1]作为一个有序序列,无序序列即array[2..n]。从n=2 至 n = n为止,依次将array[n]插入到有序序列当中,使插入的记录也是有序的,生成含n个记录的有序序列。
具体操作:
将要插入的记录array[i]取出,保存到临时变量temp中;
找到array[ i ] (i=2,3….,n-1)的正确插入位置k (1≤ k ≤ n-1 );
将temp与array[i-1]进行比较,若temp大,则将array[i-1]向后移,直到找到比temp小的记录,将temp插入到该记录的后一位置。
如此循环n-1次,直到把这n-1个记录全部插入有序序列。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var a = [1 , 3 , 7 , 2 , 5 , 9 , 8 ,6 , 4 , 10];
var i , j , temp;
for (i = 1; i < 10; i++) {
//暂时保存需要插入的那个数,因为在比较时会把a[i]的值覆盖,所以需要先保存
temp = a[i];
for (j = i - 1; j >= 0 && a[j] > temp; j--) {
//如果满足条件,则将a[j]向后移动
a[j+1] = a[j];
}
//将这个数插入有效序列
a[j+1] = temp;
}
for (var i = 0; i < 10 ; i++) {
document.write(a[i]);
}
</script>
</body>
</html>