在前一篇插入排序:表插入中,我们用静态链表的存储方式,直接插入的策略,构建了一种新的插入排序算法:表插入。有人可能会想到:同样是静态链表的形式,为什么不使用更高效的折半插入策略呢?这种想法真的很好,如果做到了,显然是极大的优化。
我在网上还真看到了相关的内容,大家可搜下《表插入方法的改进》,里面有此想法的介绍。这篇博客就是介绍表插入的另一种实现:表折半插入。看完一定让你彻底理解它!
与一般的折半插入相比,有如下的几点变化:
- 为了实现折半查找,我们对静态链表的节点类型做了一些变化:添加了一个前驱指针。它的意义很显然,以前是high=mid-1,在单向链表中我们是做不到的(其实可以换种方式做到,不过相对麻烦),于是添加一指向其前驱的指针,构成双向链表,方便进行此操作。
- while循环的结束条件,有所不同。这个要仔细理解!</