描述:
给定一个单调递增的整数序列,问某个整数是否在序列中。
输入:
第一行为一个整数n,表示序列中整数的个数;第二行为n(n不超过10000)个整数;第三行为一个整数m(m不超过50000),表示查询的个数;接下来m行每行一个整数k。
输出:
每个查询的输出占一行,如果k在序列中,输出Yes,否则输出No。
输入样例:
5 1 3 4 7 11 3 3 6 9
输出样例:
Yes No No
public class BinarySearch { static int arr[]; public static void main(String[] args) { Scanner cin = new Scanner(System.in); while (cin.hasNext()) { int n = cin.nextInt(); arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = cin.nextInt(); } int m = cin.nextInt(); int searchArr[] = new int[m]; for (int i = 0; i < m; i++) { searchArr[i] = cin.nextInt(); } for (int i = 0; i < m; i++) { search(0, n - 1, searchArr[i]); } } } public static void search(int low, int high, int d) { if (low > high) { System.out.println("No"); return; } else { int mid = (low + high) / 2; if (arr[mid] == d) { System.out.println("Yes"); return; } else if (arr[mid] > d) { high = mid - 1; search(low, high, d); } else if (arr[mid] < d) { low = mid + 1; search(low, high, d); } } } }