列表查詢之順序查詢和二分查詢

2021-10-07 20:40:15 字數 865 閱讀 5372

1.順序查詢:時間複雜度為

#順序查詢:

def linear_search(li,val):

#遍歷列表li

for ind,v in enumerate(li):

if v==val:

return ind

else:

return none

if __name__ == "__main__":

li = [1,2,3,4,5,6]

a = linear_search(li,4)

print(a)

輸出:3

2.二分查詢:時間複雜度為

#二分查詢

def binary_search(li,val):

left = 0

right = len(li)-1

while left <= right:

mid = (left+right)//2

if li[mid] == val:

return mid

#如果val大於中間值,則讓left指向mid+1

elif li[mid]val:

right = mid-1

else:

return none

if __name__ == "__main__":

li = [1,2,3,4,5,6]

a = binary_search(li,4)

print(a)

輸出:3

注:python內建的函式index()是採用順序查詢的方式,因為雖然二分查詢的速度快,但其有乙個前提條件:列表必須是已排好序的。

查詢演算法之順序查詢和二分查詢

1.順序查詢 基本思想 從資料結構線性表一端開始,順序掃瞄,依次將掃瞄到的關鍵字值與給定key相比較,若相等則表示查詢成功 若掃瞄結束仍沒有找到關鍵字等於key值的結點,表示查詢失敗。順序查詢適合於儲存結構為順序儲存或鏈結儲存的線性表。如下 include include using namespa...

順序查詢和二分查詢

二分查詢 陣列裡查詢某個元素 search函式 其中 array為陣列,k為要找的值,low為查詢範圍的最小鍵值,high為查詢範圍的最大鍵值 function search array,k,low 0,high 0 if low high 如果還存在剩餘的陣列元素 elseif k array m...

順序查詢和二分查詢

1 順序查詢 又稱線性查詢,是從陣列的第乙個元素開始查詢,直到找到待查詢元素的位置。順序查詢適合於儲存結構為順序儲存或鏈結儲存的線性表。使用for迴圈等實現。int find int a,int x return index 2 二分查詢 二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能...