0Pricing
Competitive Programming Academy · درس

سبب أن الترتيب أولًا يفتح باب الحلول

إعدادات الجشع والمؤشرين بعد الترتيب

سبب أن الترتيب أولًا يفتح باب الحلول درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

الفرز خطوة تمهيدية

نادرًا ما يحل الفرز المسألة بمفرده، لكنه يمهّد الطريق للحيلة الأساسية. إذ يحوّل الترتيب المصفوفة الفوضوية إلى بنية يمكنك استغلالها.

الترتيب يتيح استخدام مؤشرين

بعد ترتيب البيانات، يتحرك مؤشّران من الطرفين. وينخفض تعقيد العثور على زوج ذي مجموع مستهدف من O(n squared) إلى O(n).

الترتيب يتيح البحث الثنائي

المصفوفة المرتبة هي المدخل إلى البحث الثنائي. وبمجرد وجود الترتيب، يمكن تحديد القيم أو مواضع الإدراج في O(log n).

from bisect import bisect_left
i = bisect_left(sorted_nums, target)

غالبًا ما يحتاج الجشع إلى الفرز

تقول كثير من براهين الجشع اختر الأصغر أو أنهِ المهمة الأسبق أولًا. ويضع الفرز حسب ذلك الحقل الاختيار الصحيح في متناولك.

افرز لاكتشاف التكرارات

بعد الفرز، تتجاور العناصر المتساوية جنبًا إلى جنب. ويمكن عندئذٍ لمرور واحد اكتشاف التكرارات أو عدّها من دون ذاكرة إضافية.

for i in range(1, len(a)):
    if a[i] == a[i-1]:
        print("dup", a[i])

تحتاج الفترات إلى بدايات مرتبة

يبدأ دمج الفترات أو جدولتها بفرزها حسب وقت البدء. ثم يتعامل المرور من اليسار إلى اليمين مع التداخلات بسلاسة.

intervals.sort(key=lambda iv: iv[0])

يكشف الفرز الوسيط

العنصر الأوسط بعد الفرز هو الوسيط، وتصبح الفجوات بين الجيران واضحة. وتعتمد كثير من مسائل المسافات على ذلك.

احسب التكلفة الإضافية

يضيف الفرز O(n log n)، وهي تكلفة زهيدة عادةً مقارنةً بالعمل الذي يتيحه. تأكد من ملاءمتها للحد الزمني قبل الاعتماد عليه.

احذر فقدان الفهارس الأصلية

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

order = sorted(range(n), key=lambda i: a[i])

اسأل: هل سيساعد الترتيب

عندما تتعثر، اسأل ما إذا كان الترتيب سيبسّط المهمة. إذا كان الأمر كذلك، فافرز أولًا، وغالبًا ما سيظهر مسار المؤشرين أو الجشع أو البحث الثنائي.

الفرز حدس أول

يجرّب المحللون المتمرسون الفرز مبكرًا كتجربة افتراضية. فمن السهل إضافته، وكثيرًا ما يكشف الحل بأكمله.

اختبار سريع

لقد فرزت مصفوفة، لكنك تحتاج لاحقًا إلى موضع كل عنصر في الإدخال.

مراجعة

يتيح الفرز استخدام مؤشّرين والبحث الثنائي والجشع وإزالة التكرارات ومسح الفترات. احسب تكلفته واحتفظ بالفَهارس عند الحاجة إليها. 🚀

الأسئلة الشائعة

هل درس «سبب أن الترتيب أولًا يفتح باب الحلول» مجاني؟

نعم — نص درس «سبب أن الترتيب أولًا يفتح باب الحلول» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.

ماذا ستتعلم في «سبب أن الترتيب أولًا يفتح باب الحلول»؟

إعدادات الجشع والمؤشرين بعد الترتيب تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟

لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «سبب أن الترتيب أولًا يفتح باب الحلول»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟

نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. ‏sorted() ودالة key
  2. الترتيب حسب حقول متعددة
  3. ترتيب مخصص باستخدام functools.cmp_to_key
  4. سبب أن الترتيب أولًا يفتح باب الحلول
← العودة إلى Competitive Programming Academy