搜尋
搜尋是在乙個專案集合中找到乙個特定專案的演算法過程。搜尋通常的答案是真的或假的,因為該專案是否存在。 搜尋的幾種常見方法:順序查詢、二分法查詢、二叉樹查詢、雜湊查詢
一 、 二分法查詢
二分查詢又稱折半查詢,優點是比較次數少,查詢速度快,平均效能好;其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;否則利用中間位置記錄將表分成前、後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
二、**實現
def
binary_search_1
(alist,item)
:"""二分查詢遞迴版本"""
n =len(alist)
if n >0:
mid = n//
2if alist[mid]
== item:
return
true
elif item < alist[mid]
:return binary_search_1(alist[
:mid]
, item)
else
:return binary_search_1(alist[mid+1:
], item)
return
false
defbinary_search_2
(alist,item)
:"""二分查詢非遞迴版本"""
n =len(alist)
first =
0 last = n-
1 mid =
(first+last)//2
while first <= last:
if alist[mid]
== item:
return
true
elif alist[mid]
> item:
last = mid -
1else
: first = mid +
1return
false
時間複雜度
最優時間複雜度:o(1)
最壞時間複雜度:o(logn)
Python二分查詢
二分查詢又稱折半查詢,首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後兩個子表,如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。重複以上過程,直到找到滿足條件的記錄,使查詢成...
python 二分查詢
搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋過程結束 如果某一特定元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟開始一樣從中間元素開始比較。如果在某一步驟陣列為空,則代表找不到。這種搜尋演算法每一次比較都使搜尋範圍縮小一半 param array ...
二分查詢(Python)
演算法介紹 二分查詢要求陣列為有序排列,每次取中間的數與target進行比較,若相等,則查詢成功 若中間數較大,則在前一部分查詢,反之,在後一部分查詢。其時間複雜度為o logn 演算法實現def binarysearch nums,target if not nums return false s...