4174.二分查找的最大次数

通过数:17提交数:68学校:同济大学考研机试真题 题目列表 标签
题目描述 这里是一个在排序好的数组 ${A}$(从小到大)中查找整数 ${X}$ 的函数,返回值是查找次数。 int binarySearch(int a[], int n, int x) //数组,数组大小,查找的数据 { int cnt = 0; int L = 0, R = n - 1, mid; while (true) { cnt++; mid = (L + R) / 2; if (a[mid] == x) return cnt; else if (x < a[mid]) R = mid; else L = mid + 1; } return cnt; //查找失败 } 现在的问题是,数组 ${a}$ 中某些数据损坏了,我们只知道数组中的一部分数据和数组的大小 ${N}$,我们想知道查找整数 ${X}$ 最大的可能的查找次数,我们假设数组中每个数都不相同,且 ${X}$ 一定出现在原数组中,${a}$ 在被损坏前是已经排好序的。 输入格式 多组测试数据,每组第一行是数组大小 ${N}$(${1<=N<=100000}$),第二行是这个数组的数,这个数组都是正数,${-1}$ 表示这个数据被损坏。第三行是查找的正整数 ${X}$。数据都在 ${32}$ 位以内。 输出格式 ${X}$ 的最大查找次数。 输入样例 5 1 2 3 4 5 3 5 1 -1 -1 -1 5 3 5 -1 -1 -1 -1 -1 3 输出样例 1 2 3
C
补全
点击调试按钮即可调试代码。

点击提交按钮即可提交代码。