基本思想:当插入第 i (i > 1)个元素时,前面的 V[0],V[1],...,V[i - 1] 已经排好序。这时,用 V[i] 的排序码与 V[i-1],V[i-2],... 的排序码顺序进行比较,找到插入位置即将 V[i] 插入,原来位置上的元素向后移动。 |
下面例子说明: 原始数据顺序:21、25、49、25、16、8 |
第一趟:当 i = 1 时,由于 25 大于 21,即第 i 个元素已排好:21、25、49、25、16、8 |
第二趟:当 i = 2 时,由于 49 大于 25,即第 i 个元素已排好:21、25、49、25、16、8 |
第三趟:当 i = 3 时,由于 25 小于 49,所以 25 插入49 的位置,而 49 需要向后移:21、25、25、49、16、8 |
第四趟:当 i = 4 时,由于 16 小于前面的所有元素,则将 16 插入到最前面的位置,即插入 21 的位置,其他元素向后移动:16、21、25、25、49、8 |
第五趟:当 i = 5 时,由于 8 小于前面的所有元素,则将 8 插入到最前面的位置,即插入 16 的位置,其他元素向后移动:8、16、21、25、25、49 |
完成直接插入排序:8、16、21、25、25、49 |