Skip to Content
🧮 CTDL & Giải thuật🔍 Thuật toán tìm kiếm

Thuật toán tìm kiếm (Searching)

Tổng quan

Thuật toánĐộ phức tạpYêu cầu
Linear SearchO(n)Không
Binary SearchO(log n)Mảng đã sắp xếp
def linear_search(arr, target): for i, num in enumerate(arr): if num == target: return i return -1
💡

Binary Search với 1 triệu phần tử chỉ cần ~20 bước! (log₂ 1,000,000 ≈ 20)

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

Tìm trong mảng xoay

def search_rotated(arr, target): left, right = 0, len(arr) - 1 while left <= right: mid = (left + right) // 2 if arr[mid] == target: return mid if arr[left] <= arr[mid]: # Left half sorted if arr[left] <= target < arr[mid]: right = mid - 1 else: left = mid + 1 else: # Right half sorted if arr[mid] < target <= arr[right]: left = mid + 1 else: right = mid - 1 return -1

Tiếp theo: Thuật toán sắp xếp

Last updated on