直接插入排序算法的核心:每次取一个待排序的数字和一个已经排好序的队列进行比较,找到合适的位置进行插入。
以下面一组数字作为引入,我们做一个升序的:
98,69,75,47,89,100,90,70
1.在第一次的时候,我们认为98就是有序的了,那么拿98后面的一个数69进行比较,发现69<98,需要进行排序。我们把69记录下来作为”哨兵“(待排序的就是哨兵)X = 69,同时记录下原先有序数组的最后一个数据的index,这里也就是98的下标0,j = 0.遍历前j个数,与哨兵做比较。69小于98,98后移,前面没有数据了,69排在前面。
排序完的数据如下:(69,98),75,47,89,100,90,70
2.现在认为69,98是一个有序的数组了,按照步骤一,我们列下逻辑:
array[2] < array[1],需要排序
记录标志位,记录哨兵:X = 75,j = 1。
哨兵与a[j]比较,75< a[1],a[j]占住a[j + 1]位置,数据变成如下(69,98),98,47,89,100,90,70
j减1,j变成0 哨兵继续与a[0]比较,75 > 69。结束比较。哨兵占住a[0]位置
按照上面的逻辑,编写代码如下: