共計(jì) 803 個(gè)字符,預(yù)計(jì)需要花費(fèi) 3 分鐘才能閱讀完成。
二分查找算法是一種高效的查找算法,可以用于在有序數(shù)組中查找特定元素。其基本思想是將查找區(qū)間不斷二分,然后根據(jù)中間元素與目標(biāo)元素的大小關(guān)系,縮小查找區(qū)間,直到找到目標(biāo)元素或者確定目標(biāo)元素不存在。
以下是一個(gè)簡(jiǎn)單的示例代碼,演示了二分查找算法的應(yīng)用:
def binary_search(arr, target):
left, right = 0, len(arr) - 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return -1
# 示例用法
arr = [1, 3, 5, 7, 9, 11, 13]
target = 5
result = binary_search(arr, target)
if result != -1:
print(" 目標(biāo)元素在數(shù)組中的索引為 ", result)
else:
print(" 目標(biāo)元素不在數(shù)組中 ")
上述示例中,binary_search
函數(shù)接受一個(gè)有序數(shù)組 arr
和一個(gè)目標(biāo)元素 target
作為參數(shù),返回目標(biāo)元素在數(shù)組中的索引。如果目標(biāo)元素不存在于數(shù)組中,則返回 -1。
在示例中,算法首先定義了查找區(qū)間的左右邊界 left
和right
,初始時(shí)分別為數(shù)組的第一個(gè)和最后一個(gè)元素的索引。然后進(jìn)入一個(gè)循環(huán),每次循環(huán)將查找區(qū)間二分為兩個(gè)子區(qū)間,然后根據(jù)中間元素與目標(biāo)元素的大小關(guān)系,更新左右邊界。如果中間元素等于目標(biāo)元素,則找到目標(biāo)元素,返回其索引。如果中間元素小于目標(biāo)元素,則目標(biāo)元素應(yīng)該在右子區(qū)間中,更新左邊界為中間元素的下一個(gè)位置。如果中間元素大于目標(biāo)元素,則目標(biāo)元素應(yīng)該在左子區(qū)間中,更新右邊界為中間元素的上一個(gè)位置。循環(huán)結(jié)束條件是左邊界大于右邊界。
通過(guò)二分查找算法,可以快速地在有序數(shù)組中查找目標(biāo)元素,時(shí)間復(fù)雜度為 O(log n)。
丸趣 TV 網(wǎng) – 提供最優(yōu)質(zhì)的資源集合!