二分看似簡單,但需注意細枝末節(jié)
接下來簡單探討幾種查詢
以嚴(yán)格大于x的第一位數(shù)為例子
//序列為m ,x為查詢的數(shù)
int find(int x){//假設(shè)序列長為n;
int l=1,r=n;
while(l<=r){
int mid=(l+r)>>1;
if(m[mid]<=x) l=mid+1;
else r=mid-1;
}//最后出現(xiàn)一定會出現(xiàn) l==r,此時mid==l
// 若m[mid]<=x,則m[mid+1]>x;
//若m[mid]>x,則 m[l]>x,m[mid-1]<x
return m[l];
}
嚴(yán)格大于等于x的情況,只需要去掉等號號即可
嚴(yán)格小于x的情況,將小于符號改為大于符號即可
嚴(yán)格小于等于x的情況,也只需要去掉等號即可文章來源:http://www.zghlxwxcb.cn/news/detail-568760.html
寫題過程中還有具體的探討,可以從這幾種方法中遷移應(yīng)用文章來源地址http://www.zghlxwxcb.cn/news/detail-568760.html
到了這里,關(guān)于進一步探討二分的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!