تقييم الدرس 7: الترتيب بالدمج والترتيب السريع. إجاباتك تُحفظ تلقائيًّا على هذا الجهاز؛ أجب ثم اضغط «صحّح ورقتي».
1السؤال الأول: اختر الإجابة الصحيحة
1) ماذا يطبع البرنامج؟
main.py×
📄📂💾▶🐞⏹
defmerge(l, r): out, i, j = [], 0, 0while i < len(l) and j < len(r):if l[i] <= r[j]: out.append(l[i]); i += 1else: out.append(r[j]); j += 1return 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×
📄📂💾▶🐞⏹
defquick_sort(a):iflen(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]))