二分检索
二分检索可以对应一棵二叉检索数,成功检索到每个值对应于二叉检索的内节点,检索不成功对应于二叉检索的外节点
n在[2k-1, 2k]中,二叉检索树(包含外节点)为0~k层,外节点即检索不成功至多比较k次,至少比较k-1次
成功检索的平均比较次数:
成功检索也要全部执行完的算法
int low = 1, high = n+1;
while (low < high-1) // low-high 的开区间
{
int mid = [high+low]/2;
if x<A(mid)
high = mid
else
low = mid
}
if x = A(low)
j = low
else
j = -1
/*
12345
3:1-6 3-6 3-4 [3]
1:1-6 1-3 1-2 [3]
1.5:1-6 1-3 1-2 [3]
3
2 4
1 5
检索成功次数:k/k+1
*/