題目相關
題目鏈結
計蒜客,
題目描述
蒜頭君手上有個長度為 n 的陣列 a。由於陣列實在太大了,所以蒜頭君也不知道陣列裡面有什麼數字,所以蒜頭君會經常詢問整數 x 是否在陣列 a 中。
輸入格式
第一行輸入兩個整數 n 和 m,分別表示陣列的長度和查詢的次數。
接下來一行有 n 個整數 ai。
接下來 m 行,每行有 1 個整數 x,表示蒜頭君詢問的整數。
輸出格式
對於每次查詢,如果可以找到,輸出"yes",否則輸出"no"。
樣例輸入
10 5
1 1 1 2 3 5 5 7 8 901
4910樣例輸出
noyes
noyes
no資料範圍
1 ≤ n, m ≤10^5, 0 ≤ x ≤ 10^6。
分析標準的二分查詢模板。
題目要求
輸入乙個 x,在陣列 a 中找到,輸出"yes",否則輸出"no"。
程式設計思路
1、讀入陣列 a。
2、對 a 進行排序。
3、讀入乙個 x,在陣列 a 二分查詢 x 是否存在。
stl 版本
利用 algorith 庫中 binary_search 函式。
#includeusing namespace std;int main()
else cout<<"no\n";
} return 0;
}
自己實現乙個類似 stl 的 binary_search 函式。
#includeusingnamespace
std;
int binary_search(int a,int left,int right,int
x)
return -1;}
intmain()
return0;
}
二分查詢模板
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。演算法思路 假設目標值在閉區間 l,r 中,每次將區間長度縮小一半,當l r時,我們就找到了目標值。模板一當區間 l,r 的更新操作是r mid l mid 1 時,計算mid時不需要加1。int bsearch 1 in...
二分查詢模板
例如陣列中查詢乙個數 二分查詢的前提是整個陣列是有序的 模板 int a n int l 0,r n 1 int mid,key while l r 另外還有一些二分查詢函式 a.函式模板 binary search arr,arr size indx c.函式功能 在陣列中以二分法檢索的方式查詢,...
二分查詢模板
二分查詢模板總共有兩個 將區間分為 l,mid l,mid l,mid mid 1,r mid 1,r mid 1 r 時,如下 while l r else 將區間分為 l,mid 1 l,mid 1 l,mid 1 mi d,r mid,r mid,r 時,如下 while l r else 對...