二分法查詢

2021-07-27 17:13:02 字數 791 閱讀 8581

給定乙個集合,查詢元素是否在集合中出現。

每個測試用例由多行組成,第一行是兩個整數n和m,兩個數範圍在1到100000之間。自第二行起一共有n+m個整數,其中前面n個整數代表集合的元素,隨後的m個整數是待查詢的數。所有的整數在範圍[-2^31,2^31)內。

對於每個待查詢的數,如果在集合中則輸出yes,否則輸出no.

5 3
7 9 3 2 -5
4 9 -5
5 3
-2 1 0 -2 1
0 -2 3
no
yes
yes
yes
yes
no
1普通的方法時間複雜度較大,很容易超限,所以思考之後用二分查詢
2注意呼叫函式會耗一定的時間,
#include#includeusing namespace std;

int a[300000];

int n;

int main()

{ int m,i,j,num,left,right,mid,flag;

while(scanf("%d %d",&n,&m)!=eof)

{ if(!n&&!m) break;

for(i=1;i<=n;i++)

scanf("%d",&a[i]);

sort(a+1,a+1+n);

for(i=0;inum) right=mid-1;

else if(a[mid]

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...

二分法查詢

前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...