資料搜尋中的戰鬥機 二分查詢法

2022-05-19 08:05:25 字數 1408 閱讀 5415

搜尋的幾種常見方法:順序查詢、二分法查詢、二叉樹查詢、雜湊查詢

二分查詢優缺點;

優點是比較次數少,查詢速度快,平均效能好

缺點是要求待查表為有序表,且插入刪除困難

二分查詢的前提:1.有序序列 2.順序表(時間複雜度為o(1))

二分查詢的時間複雜度: 最優時間複雜度:o(1) , 最壞時間複雜度:o(logn)

1.遞迴方法實現二分查詢

"""遞迴方法實現"""

def binary_search(alist, item):

n = len(alist)

if 0 == n:

return false

mid = n // 2

if alist[mid] == item:

return true

elif item < alist[mid]:

return binary_search(alist[:mid], item)

else:

return binary_search(alist[mid + 1:], item)

if __name__ == '__main__':

li = [12, 23, 34, 67, 78, 89]

print(binary_search(li, 34))

print(binary_search(li, 45))

2.非遞迴方法實現二分查詢

"""非遞迴方法實現"""

def binary_search(alist, item):

n = len(alist)

start = 0

end = n - 1

while start <= end:

mid = (start + end) // 2

if alist[mid] == item:

return true

elif item < alist[mid]:

end = mid - 1

else:

start = mid + 1

return false

if __name__ == '__main__':

li = [12, 23, 34, 67, 78, 89]

print(binary_search(li, 34))

print(binary_search(li, 45))

二分搜尋法(搜尋原則的代表)

如果搜尋的數列已經有排序,應該盡量利用它們已排序的特性,以減少搜尋比對的次數,這是搜尋的基本原則,二分搜尋法是這個基本原則的代表。public class binarysearch return 1 public static void main string args quicksort.sort...

二分法查詢資料

首先你儲存的資料內容必須是有序的 其次找到中間值 然後將你想要的查詢的值進行對比 如果比他大就去右邊尋找 反之就往左邊尋找 public static void main string args scanner b newscanner system.in system.out.println 請輸...

資料結構 二分查詢法

public class sequencesearch02 輸入乙個數看看該陣列是否存在此數,並且求出下標,如果沒有就提示 沒有這個數 思路分析 當陣列個數為奇數時 1.先定義乙個陣列 int nums 2.定義 下標low 0,上標height 6 middle指標為 low middle 2 3...