1、Binary Search算法簡介
二分查找,它的時間復雜度是 O(logn)。 ?其核心思想有點類似分治思想。
即每次都通過跟區間中的中間元素對比,將待查找的區間縮小為一半,直到找到要查找的元素,或者區間被縮小為 0。
但是二分查找的代碼實現比較容易寫錯。你需要著重掌握它的三個容易出錯的地方: 循環退出條件、mid 的取值,low 和 high 的更新 。 ?
二分查找雖然性能比較優秀,但應用場景也比較有限。 底層必須依賴數組 ,并且還要求 數據是有序 的。對于較小規模的數據查找,我們直接使用順序遍歷就可以了,二分查找的優勢并不明顯。二分查找更適合處理 靜態數據 ,也就是沒有頻繁的數據插入、刪除操作。
2、代碼詳解
class Solution:
def bsearch(self, nums, target):
"""Binary search of a target in a sorted array
without duplicates. If such a target does not exist,
return -1, othewise, return its index.
"""
left, right = 0, len(nums)-1
while left <= right:
mid = left + (right - left) // 2
if nums[mid] == target:
return mid
elif nums[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
s = Solution()
a = [1,3,5,6,7,9,11]
print(s.bsearch(a, 7))
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
