الفكرة ببساطة
في قائمة مرتبة تصاعديا، قارن العنصر المطلوب بعنصر المنتصف. لو الهدف أكبر، استبعد المنتصف والجزء اللي قبله.
لو الهدف أصغر، استبعد المنتصف والجزء اللي بعده. تكرر لين تلاقيه أو تصير حدود البحث بدون عناصر.
مثال محلول
نبحث عن 15 في القائمة المرتبة [2, 5, 8, 12, 15, 21, 30].
range 0..6 → mid 3 → value 12
range 4..6 → mid 5 → value 21
range 4..4 → mid 4 → value 15وصلنا للعنصر في الفهرس 4. في كل خطوة نحذف نصف مجال البحث تقريبا.
انتبه لهالنقطة
إذا كان المنتصف مختلفا عن الهدف، لا تدخله في المجال التالي. تركه ممكن يخلي الحدود تتكرر.
جرّب بنفسك
لو الهدف 13 في القائمة نفسها، وش يصير بعد مقارنة القيمة 15 في الفهرس 4؟
اعرض الإجابة
ننزل الحد الأعلى إلى 3. الحد الأدنى 4، فالمجال صار فارغا ونرجع أن العنصر غير موجود.