Developer Toolbox

الفرز بالدمج

يقسم القائمة إلى نصفين، ويرتّب كل نصف، ثم يدمج النصفين المرتّبين في قائمة واحدة مرتّبة.

  • Ω(n log n)
  • Θ(n log n)
  • O(n log n)
  • O(n)
  • نعم
  • لا
  • قيد المقارنة
  • قيد النقل
  • في مكانه النهائي
0 / 263 خطوة

↓ تقسيم ↓ دمج عمليات الدمج المنجزة: 0 من 23

المقارنات الكتابات

اضغط تشغيل: تُظهر الخطوط كيف تزداد الكلفة أثناء الفرز

اضغط تشغيل أو تقدّم في الخوارزمية خطوة بخطوة.

مفتاح المسافة: تشغيل أو إيقاف مؤقت. السهمان الأيسر والأيمن: خطوة بخطوة. Home وEnd: الانتقال المباشر.

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

كيف يعمل

تُقسَم القائمة مرارًا حتى تبقى في كل قطعة قيمة واحدة، وهي مرتّبة بطبيعتها. ثم تُدمج القطع أزواجًا: تُقارَن أول قيمة في كل قطعة وتؤخذ الأصغر، مرة بعد مرة. الصف المرفوع في الرسم المتحرك هو الذاكرة الإضافية المستخدمة أثناء الدمج.

متى يكون خيارًا جيدًا

عندما تحتاج سرعة تبقى جيدة حتى في أسوأ الحالات، ويجب أن تحافظ القيم المتساوية على ترتيبها. تستخدم Python وJava كلتاهما نسخة من الفرز بالدمج. عيبه الذاكرة الإضافية التي يحتاجها.