首先顺序查找的很简单理解的,就是按顺序一个个从后到前查找(书中约定返回命中的多个相同元素的最大的秩)。
template <typename T>
Rank Vector :: find(T const& e, Rank lo, Rank hi) const{
while ((lo < hi--) && (e != _elem[hi]));
return hi;
}
容易得出该算法的时间复杂度为:O(n)
。
以下总结二分查找算法。
二分查找算法(版本A)利用的是此前学习的减而治之的思想策略。因为总是可以将它分解为两个规模减少的子问题和一个平凡的子问题。
二分查找(版本A)的思路不再进行赘述,这篇博客主要讲的是如何更细微地改进查找算法。
二分查找(版本A)
//在有序向量空间[lo,hi)内查找元素e,0 <= lo <= hi <= _size
template <typename T> static Rank binSearch(T* A, T const& e, Rank lo, Rank hi){
while(lo < hi){
Rank mid = (lo + hi