3、2-路插入排序
先读入前面两个数,大的放队首,小的放队尾,并分别用final和first作为指针指向它们,两个都向中间延伸,first向右增长,final向左减小。
如对 int src[] = {49,38,65,97,76,13,27,49_} 进行排序(这里为了区分两个49,
我给第二个49加了一个下划线。。。)
第一步得:
final first
49 x x x x x x 38
放入第三个数时,和队首first和队尾final分别进行比较,如果比first大则放它右边,并用first指向它。如果比final小,则放final的左边,并用final指向它。如果大小final,小于first,则插入到当前的first或final的位置。
第二步得:
final first
49 65 x x x x x 38
第三步:
final first
49 65 97 x x x x 38
第四步:
final first
49 65 76 97 x x x 38
第五步:
final first
49 65 76 97 x x 13 38
第六步:
final first
49 65 76 97 x 13 27 38
第七步:
final first
49 49_ 65 76 97 13 27 38
这样做的好处是可以减少移动的次数。。。具体的程序实现留给读者去实现。。。