الفرز بالدمج

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

  • الأفضل Ω(n log n)
  • المتوسط Θ(n log n)
  • الأسوأ O(n log n)
  • الذاكرة O(n)
  • مستقر
  • يحتاج ذاكرة إضافية
ماذا تعني هذه المصطلحات؟
  • الأفضل: كيف يزداد الوقت مع حجم القائمة n عندما تكون المدخلات هي الأسهل لهذه الخوارزمية.
  • المتوسط: النمو المعتاد للوقت مع n. في n² إذا تضاعف عدد القيم صار الوقت نحو أربعة أضعاف، أما n log n فينمو أبطأ بكثير.
  • الأسوأ: نمو الوقت مع أصعب المدخلات. مفيد عندما يجب ألا تنخفض السرعة أبدًا.
  • الذاكرة: كم يحتاج من ذاكرة إضافية غير القائمة. 1 يعني بضعة متغيرات، و n يعني نسخة من القائمة.
  • مستقر: تحافظ القيمتان المتساويتان على ترتيبهما الأصلي. يهم هذا عند الفرز حسب حقل واحد من السجل.
  • بلا ذاكرة إضافية: يرتّب داخل القائمة نفسها، دون قائمة ثانية.
  • قيد المقارنة
  • قيد النقل
  • في مكانه النهائي
0 / 263 خطوة
المقارنات الكتابات

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

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

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

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

كيف يعمل

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

تقسيمدمج52415241524125141245

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

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

© 2026 Developer Toolbox. جميع الحقوق محفوظة. حول