二分查詢模板總共有兩個
將區間分為[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
}
對於版本一,區間會一直向左劃分,直到找到最小的ind
ex
index
inde
x使得a[i
ndex
]>=x
a[index]>=x
a[inde
x]>=x
,若a [l
]!=x
a[l]!=x
a[l]!=
x,則無解。
對於版本二,區間會一直向右劃分,直到找到最大的ind
ex
index
inde
x使得a[i
ndex
]<=x
a[index]<=x
a[inde
x]<=x
,若a [l
]!=x
a[l]!=x
a[l]!=
x,則無解。
乙個題目,如果乙個區間具有單調性質,那麼一定可以二分,但是如果說這道題目沒有單調性質,而是具有某種區間性質的話,我們同樣可以使用二分。 ——yxc總
下面看一道acwing的題目acwing789.數的範圍
二分查詢模板
二分查詢也稱折半查詢 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.函式功能 在陣列中以二分法檢索的方式查詢,...
模板 二分查詢
題目描述 給定乙個包含n個整數的數列和包含m個不重複整數的數列。輸出既包含於也包含於的整數的個數k。輸入格式 輸入共4行 第1行僅包含乙個正整數n 第2行包含n個整數ai,數字之間用乙個空格分隔 第3行僅包含乙個正整數m 第4行包含m個整數bi,數字之間用乙個空格分隔。輸出格式 輸出僅包含乙個整數k...