py 二分查詢

2022-02-24 15:12:51 字數 994 閱讀 4204

'''

查詢:在一些資料元素中,通過一定的方法找出與關鍵字相同元素的過程,

列表查詢:從列表中查詢指定元素

輸入:列表、待查詢元素

輸出:元素下標(未找到元素時一般返回none或-1)

內建列表查詢函式:index()

'''# 順序查詢: 線性查詢,從列表的第乙個元素開始,順序進行搜尋,直到找到元素或搜尋到列表的最後乙個元素

# 時間複雜度 o(n) n---列表的長度 迴圈過程中無減半

def linear_search(li,val): # li 列表 val 待查詢元素

for ind,v in enumerate(li):

if v == val:

return ind

else:

return none

# 二分查詢 : 折半查詢,從有序列表中的初始候選區li[o:n]開始,通過對待查詢的值與候選區中間的值的比較,

# 可以使候選區少一半

# li[1,2,3,4,5,6,7,8,9]

def binary_search(li,val):

left = 0

right = len(li) - 1

while left <= right:# 篩選候選區值

mid = (left + right) // 2

if li[mid] == val:

return mid

elif li[mid] > val:#待查詢值在mid的左側

right = mid - 1

else:# li[mid] 值小於val 意味著帶查詢的值在mid右側

left = mid + 1

else:

return none

li = [1,2,3,4,5,6,7,8,9]

print(li)

print(binary_search(li,3))

迭代二分查詢二分查詢

在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

二分查詢及變種二分查詢

二分查詢也稱折半查詢 binary search 它的查詢效率很好。二分查詢有乙個要求是必須採用順序儲存結構,而且表種的元素是有序的。只有滿足這個條件我們才能使用二分查詢。查詢條件 查詢區域的左邊界,小於等於查詢區域的右邊界 查詢過程 1.迴圈條件 查詢條件 2.計算序列中間下標位置 3.如果待查詢...