二分查找

二分查找

題目描述

給定一個單調遞增的整數序列,問某個整數是否在序列中。

輸入

第一行爲一個整數nn不超過10000),表示序列中整數的個數;

第二行爲n個整數;

第三行爲一個整數mm不超過50000),表示查詢的個數;

接下來m行每行一個整數k

輸出

每個查詢的輸出佔一行,如果k在序列中,輸出Yes,否則輸出No

樣例輸入

5

1 3 4 7 11

3

3

6

9

樣例輸出

Yes

No

No

提示

代碼示例

import java.util.*;

public class Main {

	private static Scanner scan;
	public static void binarySearch(int[] a,int key) {
		int left,right,middle,flag=0;
		left=0;
		right = a.length-1;
		
		while(left<=right) {
			middle = (left+right)/2;
			if(a[middle]==key) {
				flag=1;
				break;
			}else if(a[middle]<key) {
				left = middle+1;
			}else {
				right = middle-1;
			}
		}
		if(flag==1){
			System.out.println("Yes");
		}else {
			System.out.println("No");
		}
		
	}
	public static void main(String[] args) {
		scan = new Scanner(System.in);
		int n=scan.nextInt();
		if(n>10000) {
			System.exit(0);
		}
		int[] array = new int[n];
		for(int index=0;index<array.length;index++) {
			array[index] = scan.nextInt();
		}
		int m = scan.nextInt();
		if(m>50000) {
			System.exit(0);
		}
		int[] key = new int[m];
		for(int index=0;index<key.length;index++) {
			key[index] = scan.nextInt();
		}
		for(int i=0;i<m;i++) {
			binarySearch(array, key[i]);
		}
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章