تمارين
مراجعة المفاهيم
الجولات الأولى من ترتيب الاختيار وترتيب الفقاعات
معطى المصفوفة [4, 2, 5, 1, 3]، رتّبها ترتيباً تصاعدياً في الجزأين التاليين.
- حاكِ الجولتين الأوليين من ترتيب الاختيار. اكتب المصفوفة بعد كل جولة وحدّد المواضع التي أصبحت ثابتة.
- حاكِ الجولة الأولى من ترتيب الفقاعات. اكتب المصفوفة الناتجة وعدد عمليات التبديل، وحدّد الموضع الذي أصبح ثابتاً.
الإجابة
-
الجولتان الأوليان هما:
الجولة المصفوفة الشرح 1 [1, 2, 5, 4, 3]أصغر عنصر، وهو 1، يُبدَّل مع العنصر الأول 2 [1, 2, 5, 4, 3]القيمة 2 موجودة بالفعل عند الفهرس 1، فلا حاجة إلى تبديل أصبح الموضعان الأولان ثابتين الآن. وتحتاج الجولات اللاحقة إلى إيجاد أصغر عنصر داخل
[5, 4, 3]فقط. -
قارن العناصر المتجاورة بالترتيب: بدّل 4 و2؛ لا تبدّل 4 و5؛ بدّل 5 و1؛ ثم بدّل 5 و3. وتكون النتيجة
[2, 4, 1, 3, 5]بعد 3 عمليات تبديل. وقد انتقل أكبر عنصر، وهو 5، إلى نهاية المصفوفة، فأصبح الموضع الأخير ثابتاً.
هل يمكن أن يتغير الترتيب النسبي للعناصر المتساوية؟
في المصفوفة ، للعنصرين و القيمة نفسها، لكن رمزيهما السفليين يحددان ترتيبهما الأصلي.
- اكتب المصفوفة بعد الجولة الأولى من ترتيب الاختيار. هل تغيّر الترتيب النسبي للعنصرين و؟
- اكتب المصفوفة بعد الجولة الأولى من ترتيب الفقاعات. هل تغيّر الترتيب النسبي للعنصرين و؟
- استناداً إلى السؤالين السابقين، اشرح كيف تختلف خوارزميتا الترتيب في الحفاظ على الترتيب الأصلي للعناصر المتساوية.
الإجابة
-
في جولته الأولى، يختار ترتيب الاختيار أصغر عنصر، وهو 1، ويبدّله مع العنصر الأول ، فتنتج المصفوفة . وقد تغيّر الترتيب النسبي لأن انتقل إلى ما بعد .
-
يقارن ترتيب الفقاعات أولاً و. ولأنهما متساويان فلا يبدّلهما. ثم يقارن و1 فيبدّلهما، فتنتج المصفوفة بعد الجولة الأولى. وما يزال قبل ، لذا لم يتغيّر ترتيبهما النسبي.
-
في هذا المثال، يغيّر ترتيب الاختيار الترتيب الأصلي للعناصر المتساوية. أما ترتيب الفقاعات فلا يبدّل العنصرين المتجاورين إلا عندما يكون العنصر الأيسر أكبر من الأيمن. ولا تُبدَّل العناصر المتساوية، فيبقى ترتيبها النسبي الأصلي محفوظاً.
مقارنة بين الترتيب العدّي والترتيب الجذري
تحتاج مدرسة إلى ترتيب أعداد كبيرة من أرقام هوية الطلاب، ويتكون كل رقم منها من 8 خانات بالضبط. أجب عن الأسئلة التالية:
- كم جولة يحتاج الترتيب الجذري عندما يبدأ من الرقم الأقل دلالة؟
- إذا عُوملت أرقام الهوية مباشرة كأعداد صحيحة في الترتيب العدّي، فلماذا ستحتاج مصفوفة العدّ إلى مدخلات كثيرة لا تُستخدم أبداً؟
- استناداً إلى السؤالين السابقين، أيّ الخوارزميتين تختار لترتيب أعداد كبيرة من أرقام هوية ثابتة الطول مكونة من 8 خانات: الترتيب العدّي أم الترتيب الجذري؟ ولماذا؟
الإجابة
-
رقم الهوية مكوّن من 8 خانات، لذا نحتاج إلى 8 جولات من الخانة الأقل دلالة إلى الخانة الأكثر دلالة. وتجمّع كل جولة القيم حسب 0–9 فقط.
-
سيستلزم العدّ المباشر مدخلاً لكل قيمة ممكنة من القيم ذات الخانات الثماني، لكن جزءاً صغيراً فقط من تلك القيم يُخصَّص فعلاً للطلاب. وستبقى معظم مدخلات مصفوفة العدّ مساوية للقيمة 0.
-
الترتيب الجذري هو الخيار الأفضل. فهو يستفيد من كون الطول ثابتاً وكون كل خانة لا تحتمل سوى 10 قيم ممكنة، فلا يتطلب إلا 8 جولات من التجميع المستقر. أما الترتيب العدّي، إذا استخدم رقم الهوية بكامله ذا الخانات الثماني كفهرس صحيح، فسيحتاج إلى مدخلات في مصفوفة العدّ لقيم كثيرة لا تظهر أبداً.
تمارين برمجية
ترتيب مصفوفة بترتيب الدمج
معطى مصفوفة أعداد صحيحة nums، نفّذ ترتيب الدمج بنفسك، ورتّب عناصرها بترتيب غير متناقص، وأعد النتيجة. لا تستدعِ دالة الترتيب المدمجة في اللغة.
تلميحات
- المجال الذي لا يتجاوز طوله 1 يكون مرتباً بالفعل
- قسّم المجال من منتصفه إلى نصفين ورتّب النصفين تعاودياً
- استخدم مؤشرين لدمج النصفين المرتبين، ثم اكتب النتيجة مرة أخرى في المصفوفة الأصلية
LeetCode{ .rounded-button .exercise-button target="_blank" rel="noopener noreferrer" }
ترتيب مصفوفة أعداد صحيحة بالترتيب العدّي
تُعطى مصفوفة أعداد صحيحة nums وعدد صحيح غير سالب . وتقع كل عناصر المصفوفة بين و.
نفّذ الترتيب العدّي، واكتب النتيجة مرة أخرى في nums بترتيب غير متناقص، ثم أعد nums.
لا تحدّد الترتيب بمقارنة العناصر، ولا تستدعِ دالة الترتيب المدمجة في اللغة.
تلميحات
- لأن كل عنصر يقع بين 0 وK، استخدم قيمة كل عنصر مباشرة كفهرس في مصفوفة العدّ
- امسح nums مرة واحدة وزد العدّ عند الموضع المقابل
- ثم امسح مصفوفة العدّ من 0 إلى K؛ فإذا ظهرت القيمة x عدداً معيناً من المرات، فاكتب x في nums ذلك العدد من المرات المتتالية