#687. L2-4 二分查找
L2-4 二分查找
当前没有测试数据。
Description
给定一个严格单调数列,询问若干个数分别需要在数列中二分几次才能找到。如果能找到,输出二分的次数;如果不能找到,输出 NONE
。
二分查找参考程序如下:
(数列单调递增时)
l = 1, r = n, cnt = 0;
while (l <= r) {
mid = (l + r) / 2;
cnt++;
if (a[mid] == key)
break;
if (a[mid] > key)
r = mid - 1;
else
l = mid + 1;
}
(数列单调递减时)
l = 1, r = n, cnt = 0;
while (l <= r) {
mid = (l + r) / 2;
cnt++;
if (a[mid] == key)
break;
if (a[mid] > key)
l = mid + 1;
else
r = mid - 1;
}
上述程序中结束时 的值即为二分次数。
Format
Input
第一行两个整数 分别表示数列长度和询问次数。
第二行 个整数,第 个表示 。
接下来 行,每行一个整数 表示要求询问的数。
Output
共 行,如果能找到,输出二分的次数;如果不能找到,输出 NONE
。
Samples
10 4
1 2 3 5 7 9 11 12 13 14
7
6
5
4
1
NONE
4
NONE
8 4
20 18 15 10 9 8 5 4
1
2
10
40
NONE
NONE
1
NONE
相关
在下列比赛中: