二分查詢模板

2022-02-15 18:59:11 字數 1002 閱讀 7473

題目相關

題目鏈結

計蒜客,

題目描述

蒜頭君手上有個長度為 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 函式。

#includeusing

namespace

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 對...