1. 程式人生 > >NWPU演算法考試複習--二分查詢

NWPU演算法考試複習--二分查詢

二分查詢

描述 給定一個單調遞增的整數序列,問某個整數是否在序列中。 輸入 第一行為一個整數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

程式碼

#include <iostream>//這道題這麼簡單就不寫註釋了吧
#include<stdio.h>
#define N 10001
using namespace std;
int binarysearch
(int arr[],int size,int x); int main() { int arr[N],i,n,cnt,x; cin>>n; for(i=0;i<n;i++) cin>>arr[i]; cin>>cnt; for(i=0;i<cnt;i++) { cin>>x; if(binarysearch(arr,n,x)==1) cout<<"Yes"<<endl; else cout<<"No"<<
endl; } return 0; } int binarysearch(int arr[],int size,int x) { int left=0,right=size-1,temp; while(left<=right) { temp=(left+right)/2; if(arr[temp]==x) return 1; else if(arr[temp]>x) right=temp-1; else left=temp+1; } return -1; }