二分法及相關擴充套件

2021-09-14 00:57:23 字數 1126 閱讀 8728

二分法是演算法中的基礎,今天用python語言來總結一下,有錯誤的地方希望能被指出。

####二分法查詢某數是否存在

def b***sit(arr,num): ###arr為陣列,num為目標數

if len(arr) <= 0:

return false

l = 0

r = len(arr) - 1

m = 0

while l < r:

m = l+((r-l)>>1)

if arr[m] == num:

return true

elif arr[m] > num:

r = m-1 ###大於目標數往左邊砍一半

else:

l = m+1 ####小於目標數往右邊砍一半

return arr[l] == num ####判斷左位置上的數與目標數是否相同

時間複雜度o(logn)注:關於中點下標的寫法:

###在乙個有序陣列中,找》=某個數最左側的位置

def bsnearleft(arr,num):

if len(arr) <= 0:

return none

l = 0

r = len(arr)-1

m = 0

while l>1)

if arr[m] >= num: ###滿足條件往左邊砍一半

index = m ###記下此時的中間位置

r = m-1

else:

l = m+1 ###不滿足條件往右邊砍一半

return index ###中間位置即為所要找的位置

注意:有序不是二分法的必要條件

二分法及相關題

2,浮點數二分法模板 bool check int x 檢查x是否滿足某種性質 區間 l,r 被劃分成 l,mid 和 mid 1,r 時使用 適合情況 滿足該性質的範圍在右邊 intbsearch 1 int l,int r return l 區間 l,r 被劃分成 l,mid 1 和 mid,r...

C 二分法查詢,遞迴二分法

用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...

python二分法查詢 Python 二分法查詢

二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...