二分查詢演算法python實現

2021-08-09 18:17:54 字數 1288 閱讀 6146

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其

缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的

關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置

記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的

記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。

# coding=utf-8

def binary_search(array,x):

''':param array: 有序表

:param x: 待查元素

:return: 返回待查元素的index, 沒有返回 -1

'''low = 0

high = len(array)-1

while low <= high :

mid = (low + high) // 2

if array[mid] == x :

return mid

#左半邊

elif array[mid] > x :

high = mid -1

#右半邊

else :

low = mid + 1

#未找到返回-1

return -1

if __name__ == '__main__':

mylist = [1, 2, 4,5, 6, 7, 13, 21, 25, 27, 31, 34, 36, 37, 47, 67, 98]

ret = binary_search(mylist,5)

print("ret:%s" % ret)

待查元素 x =5 

待查元素 x =36

二分查詢要求 序列 為有序的, 如果 序列無序 要進行 排序 ,才能進行查詢。  二分查詢 每次 都能 過濾掉一半的元素,效率還是挺高的。

分享快樂,留住感動。                 2023年10月24日 16:29                           ---biaoge

查詢演算法 二分查詢python實現

二分查詢 時間複雜度為o logn 空間複雜度為o 1 二分查詢也叫做折半查詢,是一種在有序陣列中查詢某一特定元素的查詢演算法。查詢過程從中間元素開始。如果中間元素正好是要查詢的元素,則查詢過程結束。def binary search1 arr,value binary search1 尋找與val...

python實現二分查詢演算法

二分演算法採用分而治之的思想,演算法思路比較簡單,便直接附上一端 def binarysearch ll,x length len ll height length 1ini 0 while ini height mid ini height 2findx ll mid if findx x ret...

二分查詢演算法之python實現

二分查詢也叫折半查詢,通過不斷比較目標元素與乙個有序序列 注意是有序序列 中間元素的值,達到每次查詢都能排除一半元素的一種演算法。python實現如下 usr bin python coding utf 8 import random unsortedlist generate an unsorte...