في المقالة الأخيرة ،
تعرفنا على أنواع الدمج المرحلي (مما تسبب في الاهتمام التاريخي في المقام الأول). ما هو الاتجاه اليوم؟
للتعرف على مفهوم الطلب من خلال عمليات الدمج ، عادةً ما يتم استخدام خوارزميات دمج متوازنة. يشير مصطلح "الرصيد" إلى أن الخوارزمية تقسم الصفيف بشكل متكرر الصفيفات والأجزاء الفرعية لها إلى أجزاء متساوية تقريبًا. اليوم نحن ننظر إلى كيف يبدو في الممارسة العملية.
زوج من الوظائف هو نفسه لكلا الطريقتين. على أي حال ، فإن "الهبوط" ، وهذا "التصاعدي" هو تقريبا نفس الخوارزمية ، تظهر فقط من زوايا مختلفة.
نحتاج ، في الواقع ، إلى دمج نصفين من المقطع في طبقة فرعية واحدة. يتم فرز النصفين في وقت واحد في صفيف واحد ، وتتم مقارنة العناصر الحالية في كلتا التكرار ، ويذهب العنصر الأصغر إلى الصفيف الثاني:
نسخ قطعة من مجموعة واحدة إلى أخرى. يعمل كلا التطبيقين على صفيفين ، يجب أن يتم نقل البيانات باستمرار من الرئيسي إلى المساعد والعكس بالعكس:
تنازليا الاندماج المتوازن
أولاً ، يتم أخذ المجموعة بأكملها ، وبعد ذلك يبدأ النزول العودي. يتم تقسيم الصفيف إلى أن نصل إلى المصفوفات الفرعية لعنصر واحد (يتم فرزها بنفسها). ثم يبدأ العودية الارتفاع العكسي ، مع دمج المصفوفات الفرعية على طول الطريق (يتضاعف حجم كل مستوى).
متوازن الاندماج التصاعدي
هنا يتم التكرار على الصفيف ، على طول الطريق الذي نأخذ فيه أولاً الصفائف الدنيا المجاورة (من عنصر واحد) ودمجها في أزواج. بعد مضاعفة المصفوفات الفرعية المصنفة في كل خطوة ، ندمج الجيران مرة أخرى ونتابع حتى نحصل على المصفوفة بأكملها في النموذج المصنف في المخرجات.
بشكل عام ، يُفضل تنفيذ من أعلى لأسفل ، لأنه يستخدم صفيفين بشكل أكثر كفاءة ، مما يؤدي ببساطة إلى تغيير أدوار "الرئيسي / المساعد". في الإصدار الأساسي ، يكون الصفيف A دائمًا أساسيًا ، وتكون الصفيف B دائمًا مساعدة. نتيجة لذلك ، بعد كل تكرار ، يجب إعادة البيانات من B بالكامل إلى A ، والتي لا تسهم في تحسين تعقيد الخوارزمية. من ناحية أخرى ، فإن تنفيذ الصعود أبسط ؛ فهو لا يحتوي حتى على العودية.
الاندماج غير المتوازن
من كلمة "التوازن" نفسه ضربات نوع من الموثوقية والاستقرار. قد تحصل حتى على الانطباع بأن الخوارزمية الجيدة يجب أن تكون متوازنة. يرتبط "الخلل" بنوع من التشويش والتشوهات. حسنًا ، ألا ينبغي أن يكون الشخص
المتوازن أفضل من جميع النواحي أكثر من كونه
غير متوازن ؟
في الواقع ، الأمر أسوأ. بطبيعة الحال ، فإن تقسيم المصفوفات الفرعية إلى نصفين متساويين (وهو ما يعني التوازن بين أنواع الدمج) أسهل في التنفيذ. قسّم نفسك الصفيف إلى النصف وطبق العودية على كل شوط. في الواقع ، هذه السهولة هي الميزة الرئيسية لعملية دمج متوازنة قبل واحدة غير متوازنة.
في المنشورات التالية ، سننظر في أساليب غير متوازنة. فهي أكثر صعوبة بشكل ملحوظ لفهم وتنفيذ. لن يتم توزيع بيانات الدمج اللاحقة بالتساوي والتساوي عبر المصفوفات المساعدة ، ولكن وفقًا لعدد من أرقام فيبوناتشي المعممة. وهذا سيسمح لك بتحقيق نتائج قوية لا يمكن تحقيقها لطرق متوازنة مبسطة.
المراجع
دمج (
ترجمة جوجل ) ،
دمجسلسلة المقالات:
تتوفر الفرز دمج التالية الآن في تطبيق AlgoLab (لأولئك الذين يدرسون الخوارزميات باستخدام تطبيق Excel هذا ، قم بتحديث الملف).
المصفوفات محدودة مؤقتًا - يجب أن يكون حجمها قوة لاثنين (بسبب بعض الصعوبات التي واجهتها عند برمجة التصور). بعد ذلك بقليل سيكون من الممكن فرز أي صفائف.

كُتب هذا المقال بدعم من EDISON Software ، وهي شركة تستخدم الخدمات السحابية لإنشاء برامج مدمجة وتطوير تطبيقات الهاتف المحمول على JAVA .