خوارزميةاحترافي
البحث الثنائي
اعثر على قيمة في مصفوفة مرتّبة بتقسيم نطاق البحث إلى النصف في كل خطوة.
- الزمن
- O(log n)
- الذاكرة
- O(1)
تتبّعها خطوة بخطوة
الخطوة 1 من 9
1function binarySearch(nums, target) {2 let lo = 0, hi = nums.length - 1;3 while (lo <= hi) {4 const mid = Math.floor((lo + hi) / 2);5 if (nums[mid] === target) return mid;6 if (nums[mid] < target) lo = mid + 1;7 else hi = mid - 1;8 }9 return -1;10}- target
- = 7
- 1lo
- 3
- 5
- 7
- 9
- 11
- 13
- 15
- 17hi
المصفوفة مرتّبة. نبحث في النطاق كله: lo = 0 و hi = 8.
درس احترافي
افتح الشرح الكامل
هذا الدرس جزء من الخطة الاحترافية، التي تفتح كل خطوة في كل درس، إضافة إلى تدريبات الأنماط وتقارير الإتقان.
اطّلع على الأسعاركيف تعمل
انظر إلى منتصف النطاق. إن كان هو الهدف فقد انتهيت. وإن كان أصغر من الهدف فلا يمكن أن يكون الهدف إلا في النصف الأيمن، وإن كان أكبر ففي النصف الأيسر فقط. تنصيف النطاق في كل مرة يعني نحو log₂ n مقارنة، حتى مع ملايين العناصر.