لماذا Big O؟
تقيس كيف ينمو زمن (أو ذاكرة) الخوارزمية مع حجم المدخلات n — بغضّ النظر عن سرعة الجهاز.
الرتب الشائعة (من الأفضل للأسوأ)
| الرتبة | الاسم | مثال |
|---|---|---|
O(1) | ثابت | الوصول لعنصر بفهرسه |
O(log n) | لوغاريتمي | البحث الثنائي |
O(n) | خطّي | المرور على مصفوفة |
O(n log n) | شبه خطّي | الترتيب الفعّال (merge/quick) |
O(n²) | تربيعي | حلقتان متداخلتان |
O(2ⁿ) | أُسّي | بعض الحلول التعاوديّة |
أمثلة
# O(1) — خطوة واحدة
arr[0]
# O(n) — حلقة واحدة
for x in arr:
print(x)
# O(n²) — حلقتان متداخلتان
for i in arr:
for j in arr:
print(i, j)
التعقيد المكاني
نقيس أيضًا الذاكرة الإضافية المستخدمة. حلّ بـ O(1) ذاكرة أفضل من O(n).
🎯 التالي: المصفوفات بعمق.