ترتيب الفواصل حسب البداية
ترتيب الأحداث قبل معالجتها
ترتيب الفواصل حسب البداية درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماهيّة الفترة
الفترة interval هي ببساطة زوج من الأعداد: بداية ونهاية، مثل [2, 5]. ومعظم مسائل الفترات تتكون من قائمة بهذه الأزواج. 📏
الترتيب يجلب الوضوح
تصل الفترات الأولية بأي ترتيب، مما يصعّب تحليلها. ويحوّل ترتيبها أولًا هذه الفوضى إلى مرور واضح من اليسار إلى اليمين.
رتّبوا حسب البداية
الخطوة الافتراضية هي الترتيب حسب قيمة البداية. عندها تبدأ كل فترة عند الفترة السابقة أو بعدها، ويمكنكم المرور إلى الأمام مرة واحدة.
intervals.sort(key=lambda x: x[0])تُرتّب الصفوف تلقائيًا
إذا خزّنتم الفترات كصفوف، فإن Python يرتبها حسب العنصر الأول ثم الثاني تلقائيًا. ولا تحتاجون هنا إلى دالة key أصلًا.
intervals = [(3, 7), (1, 4), (2, 5)]
intervals.sort()لماذا نبدأ بالبداية
يسمح الترتيب حسب البداية بمعالجة الأحداث وفق الترتيب الزمني. فلا يمكن للفترة التالية أن تبدأ إلا لاحقًا، وهذا هو الثابت الأساسي للمرور.
تساوي قيم البداية
عندما تتشارك فترتان في البداية، يحدد المفتاح الثانوي ترتيبهما. ويضع الترتيب حسب (start, end) الفترات الأقصر أولًا، وهو ما يساعد غالبًا.
intervals.sort(key=lambda x: (x[0], x[1]))رتّبوا أحيانًا حسب النهاية
ترتّب بعض المسائل، مثل جدولة أكبر عدد من الأحداث، حسب النهاية بدلًا من ذلك. اختاروا المفتاح الذي يتوافق مع ما يحتاج المرور إلى معرفته.
intervals.sort(key=lambda x: x[1])كلفة الترتيب
يستغرق الترتيب زمنًا قدره O(n log n)، وهو منخفض وعادةً ما يكون المكوّن المسيطر في هذه المسائل. أما المرور الذي يليه فلا يتجاوز O(n).
أبقوا البيانات الإضافية مرتبطة
إذا كانت كل فترة تحمل معرّفًا أو وزنًا، فرتّبوا السجل كاملًا، لا الحدود وحدها. فالمفتاح يتحكم في الترتيب بينما ترافقه البيانات.
intervals.sort(key=lambda iv: iv[0]) # iv = (start, end, id)رتّبوا ثم مرّروا
تتبع خوارزمية الفترات تقريبًا النمط رتّب أولًا، ثم مرّر. اضبطوا الترتيب، وستصبح عمليات الدمج والعد والجدولة حلقات بسيطة.
نموذج ذهني سريع
تخيلوا الفترات كضيوف يصلون إلى حفلة. يؤدي ترتيبها حسب البداية إلى تنظيمها وفق وقت الوصول حتى تتمكنوا من استقبالهم واحدًا تلو الآخر.
تحقق سريع
أنتم على وشك دمج قائمة من الفترات.
مراجعة
الفترة زوج من البداية والنهاية، ويحوّل الترتيب حسب البداية قائمة فوضوية إلى مرور واضح. رتّبوا أولًا، ثم عالجوا العناصر إلى الأمام في O(n). 🚀
الأسئلة الشائعة
هل درس «ترتيب الفواصل حسب البداية» مجاني؟
نعم — نص درس «ترتيب الفواصل حسب البداية» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «ترتيب الفواصل حسب البداية»؟
ترتيب الأحداث قبل معالجتها تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «ترتيب الفواصل حسب البداية»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ترتيب الفواصل حسب البداية
- دمج الفواصل المتداخلة
- اكتساح الخط لأقصى تداخل
- أقل عدد من الإزالات لمنع التداخل