البحث الثنائي يجد هدفاً في مصفوفة مرتبة بتقسيم نطاق البحث بشكل متكرر. كل مقارنة تستبعد نصف العناصر المتبقية، مما يعطي وقت O(log n).
الفكرة الأساسية
انظر إلى العنصر الأوسط. إذا كان مساوياً للهدف، فقد انتهينا. إذا كان الهدف أصغر، ابحث عن النصف الأيسر؛ إذا كان أكبر، ابحث عن النصف الأيمن. كرر حتى تجد القيمة أو يصبح النطاق فارغاً.
مثال
():
lo, hi = , (arr) -
lo <= hi:
mid = (lo + hi) //
arr[mid] == target:
mid
arr[mid] < target:
lo = mid +
:
hi = mid -
-
binary_search([, , , , ], )
