python二分法查詢 Python 二分法查詢

2021-10-10 10:57:41 字數 2035 閱讀 2355

# 二分法查詢主要的作用就是查詢元素

lst = [1,3,5,7,12,36,68,79] # 資料集 百萬級資料

num = int(input("請輸入你要查詢的元素資訊:"))

for el in lst:

if num == el:

print("存在")

break

else:

print("不存在")

len(lst)

# 0 1 2 3 4 5 6 7

# [1,3,5,7,12,36,68,79]

n = 28 # 3

# 規則. 掐頭結尾取中間, 必須是有序序列,

# 100000000

# 二分法查詢 (需要你明白和掌握)

lst = [1,3,5,7,12,36,68,79]

n = int(input("請輸入乙個數"))

left = 0

right = len(lst) - 1

while left <= right:

mid = (left + right)//2

if n > lst[mid]:

left = mid + 1

elif n < lst[mid]:

right = mid - 1

else:

print("存在")

break

else:

print("不存在")

# 遞迴

def func(n, lst):

left = 0

right = len(lst) - 1

if lst != :

mid = (left + right)//2

if n > lst[mid]:

func(n, lst[mid+1:]) # 改變列表

elif n < lst[mid]:

func(n, lst[:mid])

else:

print("找到了")

return

else:

print("沒找到")

return

n = int(input("請輸入你要查詢的數:"))

func(n, [1,3,5,7,12,36,68,79]) # 78

# 遞迴二 (需要你明白和掌握)

def func(n, lst, left, right): # 遞迴找到什麼是可以變的. 什麼是不可以變的

if left <= right:

mid = (left + right) // 2

if n > lst[mid]:

left = mid + 1

return func(n, lst, left, right)

elif n < lst[mid]:

right = mid - 1

return func(n, lst, left, right) # 遞迴如果有返回值. 所有呼叫遞迴的地方必須寫return

else:

print("找到了")

return mid # 難點

else:

print("找不到")

return -1

n = int(input("請輸入你要查詢的數:"))

lst = [1,3,55,98,37,41,2,5,1,4]

ret = func(n, lst, 0, len(lst)-1) # 78

print(ret)

# 最快的查詢

lst = [1,3,55,98,37,41,2,5,1,4]

new_lst =

for i in range(99):

for i in lst: # 1,3,55,98

new_lst[i] = 1

print(new_lst)

i = int(input("請輸入你要找的資料"))

if new_lst[i] == 0: # 1次

print("不存在")

else:

print("存在")

Python 二分法查詢

二分法演算法原理 陣列是有序陣列,確定該期間的中間位置center 將查詢的值key與array center 比較。若相等,查詢成功返回此位置 否則確定新的查詢區域,繼續二分查詢。新區域的確定 如果key arrey center 則起始位置變為center 1,結束位置不變 如果key 每一次查...

python二分法查詢

二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...

Python 二分法查詢

def binarysearch arr,value m 0 開始 n len arr 最後 while mmid m n 2 計算中間位置 if value arr mid 查詢成功,返回元素對應的位置 return mid elif value arr mid 在後面一半元素中繼續查詢 m mi...