線性搜尋
線性搜尋從頭到尾遍歷每個元素,時間複雜度 O(n)。是最簡單的搜尋方法,適用於未排序資料。
def linear_search(arr, target):
for i, x in enumerate(arr):
if x == target:
return i
return -1
二分搜尋
二分搜尋要求資料已排序,每次將搜尋範圍縮小一半。時間複雜度 O(log n),是搜尋有序資料的首選。
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
進階搜尋演算法
A* 搜尋:結合啟發式函數的最短路徑搜尋演算法,廣泛用於遊戲和地圖導航。
廣度優先搜尋 (BFS):逐層走訪,用於無權圖的最短路徑。
深度優先搜尋 (DFS):深入走訪,用於拓墣排序、連通分量檢測。