Python二分演算法

2021-09-30 14:23:32 字數 867 閱讀 2412

二分查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

# coding:utf-8

defreduce

(find,list_):

len_list = len(list_)

if len_list % 2 != 0:

len_list = len_list + 1

middle = len_list/2

if list_[middle] == find:

return

'找到'

else:

if find > list_[middle]:

# print find,'---------------',list_

return reduce(find,list_=list_[middle:])

else:

# print find,'---------------',list_

return reduce(find,list_=list_[0:middle])

if __name__ == '__main__':

list_ = range(1,100000000)

print reduce(10000000,list_)

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 公...

python二分查詢演算法

楔子 如果有這樣乙個列表,讓你從這個列表中找到66的位置,你要怎麼做?l 2,3,5,10,15,16,18,22,26,30,32,35,41,42,43,55,56,66,67,69,72,76,82,83,88 你說,so easy!l.index 66 我們之所以用index方法可以找到,是...