二分學習小結

2021-08-24 17:45:58 字數 708 閱讀 4750

乙個經典問題:

如何在乙個嚴格遞增序列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 一元三次方程求解 實數二分 題解題目能用到二分得情況 先想到用暴力,列...