الدرس 4 من 8

البحث الثنائي

هدف الدرس

من ألف مقارنة إلى عشر

01

الشرح

البحث الخطّي يمرّ على العناصر واحدًا واحدًا، فإذا كان عندك مليون عنصر احتجت إلى مليون مقارنة، أما إن كانت المصفوفة مرتّبة فتكفيك عشرون مقارنة.

والفكرة أن تنظر إلى العنصر الذي في الوسط، فإن كان هو ما تبحث عنه فقد انتهيت، وإن كان أكبر منه فما تبحث عنه في النصف الأيسر، وإلا فهو في النصف الأيمن، وهكذا تستبعد في كل خطوة نصف ما تبقّى.

وانتبه إلى أمرين، الأول أن تكتب الشرط while (lo <= hi) بالمساواة لأنك بدونها تفوّت آخر خانة، والثاني أن تحسب الوسط بـ Math.floor((lo + hi) / 2).

02

المطلوب

اكتب binarySearch(sorted, target) لتُرجع موضع العنصر إن وجدته، أو -1 إن لم تجده.

الفحوص

6 فحوص
  1. يجد قيمة في الوسط
  2. يجد الأول والأخير
  3. يُرجع -1 للقيمة غير الموجودة
  4. المصفوفة الفارغة تُرجع -1 دون أن تعلّق الصفحة
  5. يجد العناصر في مواضع مختلفة من مصفوفة كبيرة
  6. القيمة الأصغر أو الأكبر من كل العناصر تُرجع -1
03

تلميحات

0/3
دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.

index.html
المعاينة
index.html100%
–/6

اضغط «تشغيل وتصحيح» ليبدأ الفحص.

تجد 6 فحوص في بطاقة «المطلوب».

دروس المسارأتممت 0 من 8

تكتب هنا مرّة واحدة دوالًا تستعملها في كل مشروع بعد ذلك، مثل البحث والترتيب والتجميع وتسطيح القوائم المتداخلة.

مستواه متقدّم، وفيه 8 دروس مجموع مدّتها ساعة ونصف.