البحث الخطّي (Linear Search)
افحص عنصرًا عنصرًا حتى تجد الهدف.
def linear_search(arr, target):
for i, v in enumerate(arr):
if v == target:
return i
return -1
O(n) — يعمل على أي مصفوفة (مرتّبة أو لا).
البحث الثنائي (Binary Search)
⚠️ يتطلّب مصفوفة مرتّبة.
يقسّم نطاق البحث نصفين في كل خطوة:
def binary_search(arr, target):
low, high = 0, len(arr) - 1
while low <= high:
mid = (low + high) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
low = mid + 1
else:
high = mid - 1
return -1
O(log n) — أسرع بكثير: مليون عنصر يحتاج ~20 خطوة فقط.
الخلاصة
- غير مرتّبة → بحث خطّي.
- مرتّبة → بحث ثنائي (الأسرع).
🎯 التالي: المؤشّران والنافذة المنزلقة.