Theme
Primary Color

تقليل مساحة البحث بالنصف بإستخدام Binary Search

البحث الثنائي بيستبعد نصف النطاق كل مرة لكنه محتاج بيانات مرتبة

شغل المثال بإستخدام Node.js لتوضيح الفكرة ويمكن تطبيق نفس المبدأ في لغات تانية

المثال العملي

function binarySearch(items, target) {
  let left = 0;
  let right = items.length - 1;
  while (left <= right) {
    const middle = Math.floor((left + right) / 2);
    if (items[middle] === target) return middle;
    if (items[middle] < target) left = middle + 1;
    else right = middle - 1;
  }
  return -1;
}
console.log(binarySearch([3, 7, 12, 18, 25], 18));
console.log(binarySearch([3, 7, 12, 18, 25], 8));

النتيجة

3
-1

النطاق بيتقلص لحد العثور على العنصر أو انتهائه وتعقيد البحث O(log n) بدون حساب تكلفة ترتيب البيانات

جرب بنفسك

اختبر قائمة فاضية وعنصر أصغر من أول قيمة وعنصر أكبر من آخر قيمة

programming شرح