乙個經典問題:
如何在乙個嚴格遞增序列a中找出給定的數x。
二分查詢的高效之處在於,每一步都可以去除當前區間中的一半元素
因此其時間複雜度是o(logn)
優秀!!!
需要注意的是:
二分查詢的過程與序列的下標從0開始還是從1開始無關
#include#include#include#include#includeusing namespace std;
int pd(int a,int left,int right,int x)
else
}return -1;
}int main()
; printf("%d %d\n",pd(a,0,n-1,6),pd(a,0,n-1,9));
return 0;
}
以上**基於a是嚴格遞增序列
那麼,如果a是遞減的
只要把a[mid]>x改為a[mid]需要注意的是
如果二分上界超過int型資料型別範圍的一半
那麼mid=(left+right)/2的left+right就有可能超過int而溢位
所以一般使用mid=left+(right-left)/2(避免溢位)
欲查詢元素x,求出序列中的第乙個大於等於x的元素的位置l以及
第乙個大於x的元素的位置r,這樣元素x在序列中的存在區間就是[l,r)
二分查詢小結
本文主要總結二分查詢相關問題,這裡 其實已經有乙個不錯的總結了。跟著那裡的題目列表,自己寫寫答案。anyway,還得實操 二分查詢相關問題總結如下 問題整理參考 這裡 給定乙個有序陣列 非降序 陣列array和目標值target,陣列中可能有重複元素 尋找任意i使得array i 等於target,...
二分查詢小結
int binary find vector a,int target 查詢等於目標的數的位置 else return 1 int binary find1 vector a,int target 查詢第乙個不小於目標的數的位置,作用同stl中的lower bound else return rig...
二分答案小結
藍橋杯2017年省賽分巧克力 二分答案,列舉邊長x,p2678 跳石頭 題解p1316 丟瓶蓋 理清楚了邊界問題 題解計蒜客模擬賽第四場 可樂 二分答案,列舉出乙個解 唯一解 注意找到乙個 mid滿足條件的就跳出迴圈 p1024 一元三次方程求解 實數二分 題解題目能用到二分得情況 先想到用暴力,列...