丝路商队穿越茫茫大漠,沿途设有编号 1 至 100 的驿站。某日,商队管事需在驿站中寻找一处藏有补给的目标站点。为提高效率,管事采用“二分查找”的策略:每次查看当前范围正中间的驿站,若编号偏小则往后半段找,若编号偏大则往前半段找,直到找到目标。下面程序模拟了这一过程,请根据程序选择正确的选项?
int main() {
int t, cnt = 0;
cin >> t;
int l = 1, r = 100, mid;
while (true) {
cnt++;
mid = (l + r) / 2;
if (mid == t) {
cout << cnt;
break;
}
else if (mid < t)
l = mid + 1;
else
r = mid - 1;
}
return 0;
}
当目标驿站编号 t=1 时,程序输出 7
当目标驿站编号 t=64 时,程序输出 7
输入一个 1~100 的驿站编号,该算法最多查找 7 次必能找到目标驿站
假设驿站编号为 1 至 1000,将程序中 r 的初始化值修改为 1000,然后再输入一个 1~1000 的驿站编号,该算法最多查找 11 次必能找到目标驿站