تقليل مساحة البحث بالنصف بإستخدام 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) بدون حساب تكلفة ترتيب البيانات
جرب بنفسك
اختبر قائمة فاضية وعنصر أصغر من أول قيمة وعنصر أكبر من آخر قيمة