تخطَّ إلى المحتوى

🧮 شرح هياكل البيانات والخوارزميات

خوارزميات البحث

الدرس 19 من 25· ⏱ 1 دقائق قراءة

افحص عنصرًا عنصرًا حتى تجد الهدف.

def linear_search(arr, target):
    for i, v in enumerate(arr):
        if v == target:
            return i
    return -1

O(n) — يعمل على أي مصفوفة (مرتّبة أو لا).

⚠️ يتطلّب مصفوفة مرتّبة.

يقسّم نطاق البحث نصفين في كل خطوة:

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 خطوة فقط.

الخلاصة

  • غير مرتّبة → بحث خطّي.
  • مرتّبة → بحث ثنائي (الأسرع).

🎯 التالي: المؤشّران والنافذة المنزلقة.

هل كان هذا الدرس مفيدًا؟