طَبِّقْهاتعلّم المبدأ، وطبّقه بيدكمقرر 101 · تركيب البيانات والخوارزميات
تقييم الدرس 6

فرّق تسُد: البحث الثنائي

أجب عن الأسئلة ثم اضغط «صحّح ورقتي» في آخر الصفحة. ← العودة إلى الدرس

أسئلة التقييم

تقييم الدرس 6: فرّق تسُد: البحث الثنائي. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».

1السؤال الأول: اختر الإجابة الصحيحة

1) ماذا يطبع البرنامج؟
main.py
import bisectprint(bisect.bisect_left([2, 4, 6, 8, 10], 8))
2) في القائمة [5, 9, 14, 20, 31] أول عنصر يفحصه البحث الثنائي:
3) أقصى عدد مقارنات للبحث الثنائي في 1,000,000 عنصر تقريبًا:
4) ما الخطأ؟
main.py
while lo <= hi:    mid = (lo + hi) // 2    if a[mid] == x:        return mid    elif a[mid] < x:        lo = mid    else:        hi = mid - 1
5) خوارزمية تقسم المسألة إلى مسائل أصغر من النوع نفسه وتجمع حلولها:

2السؤال الثاني: صح أم خطأ

1) البحث الثنائي يعمل على أي قائمة مرتبة أو غير مرتبة.
الصواب: خطأ
2) في كل خطوة من البحث الثنائي يُستبعد نحو نصف المجال.
الصواب: صح
3) مضاعفة حجم القائمة تزيد خطوات البحث الثنائي خطوة واحدة تقريبًا.
الصواب: صح
4) البحث الثنائي أبطأ من الخطي في القوائم الكبيرة.
الصواب: خطأ

3السؤال الثالث: أكمل الفراغات من القائمة المنسدلة

1) عدد خطوات البحث الثنائي يقارب .
الإجابة: log₂ n
2) مكتبة البحث الثنائي الجاهزة في بايثون: .
الإجابة: bisect
3) شرط الحلقة الصحيح في البحث الثنائي: while lo hi.
الإجابة: <=

4السؤال الرابع: أسئلة عملية

1) ما ناتج البرنامج؟

main.py
a = [2, 5, 9, 14, 20, 27, 33]lo, hi = 0, len(a) - 1steps = 0while lo <= hi:    mid = (lo + hi) // 2    steps += 1    if a[mid] == 27:        break    elif a[mid] < 27:        lo = mid + 1    else:        hi = mid - 1print(mid, steps)
الناتج الصحيح:
Shell×
5 2
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

📝 معلم؟ أرسل ملاحظة للمؤلف عن هذا الدرس