二分查詢模板

2021-09-11 06:48:32 字數 775 閱讀 1563

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。

演算法思路:假設目標值在閉區間[l, r]中, 每次將區間長度縮小一半,當l = r時,我們就找到了目標值。

模板一當區間[l, r]的更新操作是r = mid; l = mid + 1;時,計算mid時不需要加1。

int bsearch_1(int l, int r)

return l;

}

以上二分模板用來解,最大值最小問題。

模板二當區間[l, r]的更新操作是r = mid - 1; l = mid;時,計算mid時需要加1。

int bsearch_2(int l, int r)

return l;

}

以上二分模板用來解,最小值最大問題。

一般寫二分的思考順序是這樣的:首先通過題目背景和check(mid)函式的邏輯,判斷答案落在左半區間還是右半區間。

左右半區間的劃分方式一共有兩種:

1、中點mid屬於左半區間,則左半區間是[l, mid],右半區間是[mid+1, r],更新方式是r = mid;或者 l = mid + 1;,此時用第乙個模板;

2、中點mid屬於右半區間,則左半區間是[l, mid-1],右半區間是[mid, r],更新方式是r = mid - 1;或者 l = mid;,此時用第二個模板;

模板一:h指數ⅱ

模板二:sqrt(x)

二分查詢模板

例如陣列中查詢乙個數 二分查詢的前提是整個陣列是有序的 模板 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 對...

模板 二分查詢

題目描述 給定乙個包含n個整數的數列和包含m個不重複整數的數列。輸出既包含於也包含於的整數的個數k。輸入格式 輸入共4行 第1行僅包含乙個正整數n 第2行包含n個整數ai,數字之間用乙個空格分隔 第3行僅包含乙個正整數m 第4行包含m個整數bi,數字之間用乙個空格分隔。輸出格式 輸出僅包含乙個整數k...