二分查找作为一个高效的查找算法(O(lgN))到处可见其身影,这里分享一点儿我的理解与体会。
二分查找虽然高效,但局限性也很明显:
首先,需要是连续内存;
其次,序列应该是已经排序好的,不管从小到大或者从大到小。
就以上两点,很多情况下都不能用二分查找。比如,我的数据可能是动态增加的,会有很多的添加操作。如果使用连续内存的话,显然会有大量的内存移动。因此,只能用链式存储。但是简单的链表存储后查找时效率又退化成O(N)。看到这里有人会说,用二叉树啊,二叉查找树效率O(lgN)。是啊,二分查找和二叉查找树的时间复杂度是一样的!我只想说,其实二叉查找树实现的就是链式的二分查找。

2186

被折叠的 条评论
为什么被折叠?



