1.直接插入排序
基本思想:每一步将未排序的数按照大小插入前面已经排好的序列中
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
|哨兵|49|38|65|97| 76 | 13 |
0,1,2,3,4,5,6表示一维数组序列,第一个设置为哨兵(哨兵的作用可以理解为先占据一个空间,判断待排序的数与已排好数进行比较,符合判断条件,将带排序的数先放在哨兵位置上,其他位置后移)
例如,按照升序排列,49是已排好的序列,将38与49比较,38是待排序的数,与49进行比较,38比49小,将38复制给哨兵,此时38的空间释放出来。
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 38 |49| | 65 |97| 76 | 13 |
49向后移
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| 38 | | 49 | 65 |97| 76 | 13 |
再判断38与第一个位置大小,如果大于再进行交换,否则后移
| 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| | 38 | 49 | 65 |97| 76 | 13 |
程序:
void Insertsort(a[