Thuật toán tìm kiếm (Searching)
Tổng quan
| Thuật toán | Độ phức tạp | Yêu cầu |
|---|---|---|
| Linear Search | O(n) | Không |
| Binary Search | O(log n) | Mảng đã sắp xếp |
Linear Search
Python
def linear_search(arr, target):
for i, num in enumerate(arr):
if num == target:
return i
return -1Binary Search
💡
Binary Search với 1 triệu phần tử chỉ cần ~20 bước! (log₂ 1,000,000 ≈ 20)
Python
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 -1Tìm trong mảng xoay
Python
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 -1Tiếp theo: Thuật toán sắp xếp
Last updated on