搜尋的幾種常見方法:順序查詢、二分法查詢、二叉樹查詢、雜湊查詢
二分查詢優缺點;
優點是比較次數少,查詢速度快,平均效能好
缺點是要求待查表為有序表,且插入刪除困難
二分查詢的前提: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...