عدّ العمليات باستخدام Big-O
من التعقيد الثابت إلى التربيعي بعبارات واضحة
عدّ العمليات باستخدام Big-O درس مجاني في Competitive Programming Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Competitive Programming Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
لماذا نعدّ العمليات
في المسابقات، السرعة تحسم النتيجة. بدلًا من قياس زمن تنفيذ التعليمات البرمجية، تُقدّر عدد الخطوات التي تحتاج إليها. ويُسمى هذا التقدير التعقيد الزمني. 🚀
تعرّف إلى Big-O
يصف Big-O كيفية نمو عدد العمليات مع نمو حجم الإدخال n. وهو يتجاهل التفاصيل الصغيرة ويركز على الاتجاه الغالب.
الزمن الثابت O(1)
عندما لا يعتمد العمل مطلقًا على n، يكون O(1). قراءة عنصر واحد من قائمة أو إجراء عملية جمع واحدة يستغرق دائمًا الوقت نفسه.
x = arr[0]
y = a + bالزمن الخطي O(n)
حلقة بسيطة واحدة تمر على n من العناصر تعقيدها O(n). إذا ضاعفت حجم الإدخال، فسيتضاعف العمل تقريبًا. وهذا هو الأسلوب العملي الأكثر شيوعًا.
for x in arr:
total += xالزمن التربيعي O(n^2)
الحلقة الموجودة داخل حلقة أخرى تمران على n من العناصر تعطيان O(n^2). عند n = 1000، يعني ذلك مليون خطوة، وينمو العدد بسرعة بعد ذلك.
for i in range(n):
for j in range(n):
check(i, j)الزمن اللوغاريتمي O(log n)
عندما تقلّص كل خطوة حجم المسألة إلى النصف، تحصل على O(log n). ويمكن للبحث الثنائي الوصول إلى مليار عنصر في نحو 30 خطوة فقط. ✨
سُلّم النمو
من الأسرع إلى الأبطأ، يكون الترتيب الشائع هو: O(1)، O(log n)، O(n)، O(n log n)، O(n^2). وكلما ارتفعت في القائمة، تحسن أداؤه مع ازدياد الحجم.
تجاهل الثوابت
يتجاهل Big-O العوامل الثابتة، لذا فإن O(2n) تساوي ببساطة O(n). ما زال المرور مرتين ينمو خطيًا، ولذلك لا يغيّر المضاعِف الفئة.
احتفظ بالحد الأكبر فقط
عند جمع الحدود، لا يُعتدّ إلا بالحد الأسرع نموًا. يُبسَّط O(n^2 + n) إلى O(n^2)، لأن n^2 يطغى على n مع ازدياد n.
المتتابعة مقابل المتداخلة
حلقتان متتاليتان تُجمع كلفتهما: O(n + n) = O(n). أما حلقتان متداخلتان فتُضرب كلفتهما لتصبح O(n^2). ويحدد شكل الحلقات أيّ الحالتين تنطبق.
ابدأ بأسوأ حالة
تُقيّم المسابقات الحل على أصعب اختبار، لذلك فكّر في أسوأ حالة. افترض أن الحلقة ستعمل بالكامل، لا أنها ستتوقف مبكرًا.
اختبار سريع
حان وقت اختبار حدسك بشأن Big-O.
مراجعة
أصبحت الآن تقرأ التعليمات البرمجية باعتبارها نموًا: O(1) وO(n) وO(n^2) وO(log n). تجاهل الثوابت، واحتفظ بالحد الأكبر، وفكّر في أسوأ حالة. 🎯
تعلم Python مع معلم ذكاء اصطناعي — مجانًا
اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.
- الدورات
- 30
- الدروس
- 120
الأسئلة الشائعة
هل درس «عدّ العمليات باستخدام Big-O» مجاني؟
نعم — نص درس «عدّ العمليات باستخدام Big-O» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Competitive Programming Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Competitive Programming Academy 4 دروس في المجموع.
ماذا ستتعلم في «عدّ العمليات باستخدام Big-O»؟
من التعقيد الثابت إلى التربيعي بعبارات واضحة تتمرن على Competitive Programming Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Competitive Programming Academy؟
لا تُشترط خبرة سابقة. Competitive Programming Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «عدّ العمليات باستخدام Big-O»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Competitive Programming Academy هذا؟
نعم. كل درس في Competitive Programming Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عدّ العمليات باستخدام Big-O
- القاعدة التقريبية 10^8
- قراءة القيود واختيار التعقيد
- سبب حدوث TLE وكيفية اكتشافه