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

الترتيب بالدمج والترتيب السريع

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

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

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

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

1) ماذا يطبع البرنامج؟
main.py
def merge(l, r):    out, i, j = [], 0, 0    while i < len(l) and j < len(r):        if l[i] <= r[j]:            out.append(l[i]); i += 1        else:            out.append(r[j]); j += 1    return out + l[i:] + r[j:]print(merge([1, 4, 7], [2, 5]))
2) محور القائمة [9, 3, 7, 5] في نسخة «آخر عنصر»:
3) بعد التقسيم حول المحور 5 في [9, 3, 7, 5]، يسار المحور:
4) أي الخوارزميتين أداؤها ثابت n log n في كل الحالات؟
5) الخوارزمية التي تستخدمها sorted في بايثون:

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

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

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

1) العنصر الذي يُقسم حوله في الترتيب السريع يسمى .
الإجابة: المحور
2) الأداء المعتاد للدمج والسريع نحو .
الإجابة: n log n
3) الخوارزمية التي تُبقي المتساويين بترتيبهما الأصلي تسمى .
الإجابة: ثابتة

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

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

main.py
def quick_sort(a):    if len(a) <= 1:        return a    p = a[-1]    return quick_sort([x for x in a[:-1] if x < p]) + [p] + quick_sort([x for x in a[:-1] if x >= p]) print(quick_sort([6, 2, 9, 1, 6]))
الناتج الصحيح:
Shell×
[1, 2, 6, 6, 9]
أجب عن الأسئلة ثم اضغط «صحّح ورقتي».

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