資料結構與演算法 二分查詢(Python版)

2021-10-04 03:47:15 字數 1181 閱讀 8978

那麼,有沒有方法能利用

有序表的特性,

迅速縮小待比對資料項的範圍呢? ❖

我們從列表中間開始比對!

•列表中間項比查詢項大,那麼查詢項只可能出現在

前半部分 •

列表中間項比查詢項小,那麼查詢項只可能出現在後半部分

每次都會將比對範圍縮小一半

def binarysearch(alist, item):

first = 0

last = len(alist) - 1

found = false

while first <= last and not found:

midpoint = (first + last) // 2

if alist[midpoint] == item:

found = true

else:

if item < alist[midpoint]:

last = midpoint

else:

first = midpoint

return found

testlist = [1,4,2,65,6,3,5,77,34]

print(binarysearch(testlist,2))

print(binarysearch(testlist,666))

def binarysearch(alist, item):

if len(alist) == 0:

return false

else:

midpoint = len(alist)//2

if alist[midpoint] == item:

return true

else:

if item < alist[midpoint]:

return binarysearch(alist[:midpoint],item)

else:

return binarysearch(alinst[midpoint:],item)

testlist = [1,4,2,65,6,3,5,77,34]

print(binarysearch(testlist,2))

print(binarysearch(testlist,666))

資料結構與演算法 二分查詢

二分查詢的思想是在已經排序 公升序 的陣列中,如果要查詢的數比中位數小,那麼其位置只可能在左半部分,相反只能在右半部分。這樣每次把查詢區間縮小一半,比順序查詢效率快得多。非遞迴寫法 public static int binarysearchinasclooply int nums,int star...

資料結構與演算法,二分查詢

1.時間複雜度 每次能去掉一半即 logn 2.實現方式 while迴圈 與 遞迴 我更推薦 while 迴圈,因為遞迴有個潛在的問題就是 stack over flow 堆疊溢位 而且在實際工程中是盡量避免遞迴的。雖然遞迴寫起來方便,也不容易出錯。3.實現關鍵點 我總結了下,一共有以下四點 sta...

資料結構與演算法 二分查詢

基礎概念 二分查詢又稱折半查詢,它是一種效率較高的查詢方法。二分查詢要求 線性表是有序表,即表中結點按關鍵字有序,並且要用陣列作為表的儲存結構。不妨設有序表是遞增有序的。通俗理解 每次首先找到陣列的中間位置 middle 然後把待查詢數 target 與middle進行比較。如果查詢數target ...