二分查詢演算法(Python版)

2021-09-22 13:36:41 字數 950 閱讀 8316

[本文出自天外歸雲的]

記性不好(@.@),所以平時根本用不到的東西就算學過如果讓我去想也會需要很多時間(*.*)!

在乙個有序陣列中查詢元素最快的演算法,也就是折半查詢法,先找乙個陣列中間位置(binary_index)的元素和目標元素(num)進行比較,如果binary_index位元素小於目標元素就在binary_index位右側的子陣列中繼續遞迴查詢,如果binary_index位元素大於目標元素就在binary_index位左側的子陣列中遞迴查詢,如果binary_index位元素等於目標元素,那就是找到了目標元素。重點是確定每次查詢的左邊界或者右邊界,這樣才能通過加減binary_index位來確定最終的索引值。python**如下:

def binary_search(num,array,left_index=

0): binary_index

= len(array)/2

if num binary_search(num,array[0:binary_index],left_index)

elif num >array[binary_index]:

left_index

= left_index +

binary_index

binary_search(num,array[binary_index:len(array)+1],left_index)

else

:

print

left_index+binary_index

if__name__ == '

__main__':

array = [-1,0,1,2,3,4,5,6,7,8,10,13,14,16,18,19,40]

binary_search(0,array)

如果以後誰再問我二分查詢,那時候我肯定又已經忘掉了,再想又要好久。記錄一下吧,把關鍵處標紅。t.t

演算法 二分查詢(python版)

usr bin env python coding utf 8 二分查詢 時間複雜度o logn 乙個時間常量o 1 將問題的規模縮小一半,則o logn import random defbinary search arraya,x,n low 0 high n 1notfound 1 while...

Python演算法 二分查詢

二分查詢 binary search 也被稱為折半查詢,是在乙個有序陣列中查詢特定元素位置的查詢演算法。二分查詢要求查詢序列必須採用順序儲存,且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成...

Python 二分查詢演算法

二分前提是有序,否則不可以二分 二分查詢演算法的是時間複雜度o log n 函式可以分2類 bisect系,用於查詢index insort系,用於實際插入 預設重複時從右邊插入import bisect lst 37 88,20 50,30 65,41 50 newlst sorted lst 公...