鉴于二叉搜索算法的比较树的叶子都在相同或相邻的级别上,我们可以说在搜索 n 项列表中所做的键的比较log(n)
在最坏情况下的上限是加 1,并且是log(n) + 1
在一般情况下?
我从一本书上看到说它大约log(n) + 1
是最坏和log(n)
平均的,我认为当给定n时最坏的情况是固定的,所以不需要给出一个近似值,平均值应该加一。
代码如下:
Error_code recursive_binary_1(const Ordered_list &the_list, const Key &target, int bottom, int top, int &position)
{
Record data;
if(bottom < top) {
int mid = (bottom + top)/2;
the_list.retrieve(mid, data);
if(data < target)
return recursive_binary_1(the_list, target, mid + 1, top, position);
else
return recursive_binary_1(the_list, target, bottom, mid, position);
}
else if(top < bottom)
return not_present;
else {
position = bottom;
the_list.retrieve(bottom, data);
if(data == target) return success;
else return not_present;
}
}
如果我不是,请纠正我。