تخيل دولاب فيه أدراج متتالية، كل درج:
بما إن العناصر ورا بعض في الذاكرة، الكمبيوتر يقدر يوصل لأي عنصر مباشرة!
💡 السر: عنوان العنصر = عنوان البداية + (index × حجم العنصر)
O(1) - مباشر!
O(n) - لازم نبحث
O(n) - لازم نزحلق
O(n) - لازم نملأ الفراغ
كل خلية بتاخد 4 bytes (لو int)، فالعنوان بيزيد 4 كل مرة
⚠️ ليه O(n)؟
لو حبيت تضيف في أول المصفوفة، لازم تزحلق كل العناصر!
أسوأ حالة = n عملية زحلقة.
💡 الحالة الأفضل
لو أضفت في آخر المصفوفة = O(1)!
مفيش حاجة تتزحلق.
مثال: إضافة 99 في index 2
Before:
After:
💡 نفس المنطق
الحذف من الأول = O(n) (نزحلق كل حاجة)
الحذف من الآخر = O(1) (مفيش زحلقة)
مثال: حذف العنصر في index 1
Before:
After:
بندور عنصر عنصر من الأول للآخر
التعقيد: O(n)
✓ بيشتغل على أي array (مترتبة أو لأ)
بنقسم المصفوفة على نصين كل مرة
التعقيد: O(log n)
⚠️ بيشتغل بس لو الـ array مترتبة!
Enter a value and index, then click an operation.
Logs here.
| العملية | Average | Worst | ملاحظات |
|---|---|---|---|
| Access (القراءة) | O(1) | O(1) | مباشر بالـ index |
| Search (البحث) | O(n) | O(n) | O(log n) لو مترتبة |
| Insert (الإضافة) | O(n) | O(n) | O(1) في الآخر |
| Delete (الحذف) | O(n) | O(n) | O(1) من الآخر |