Insertion Sort
ترتيب الإدراج Insertion Sort
Insertion Sort تبني المصفوفة المرتّبة تدريجيًا، تُدرج كل عنصر جديد بموضعه الصحيح ضمن الجزء المرتّب سابقًا — تمامًا كترتيب أوراق لعب بيدك.
أسرع خوارزميات O(n²) عمليًا على بيانات صغيرة أو شبه مرتّبة أصلًا (تقترب من O(n) بأفضل حالة) — لهذا تُستخدم أحيانًا كجزء من خوارزميات هجينة (مثل Timsort) للأجزاء الصغيرة جدًا.
الصياغة
for i in range(1, n):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j+1] = arr[j]
j -= 1
arr[j+1] = key📄 مثال
def insertion_sort(arr):
for i in range(1, len(arr)):
key = arr[i]
j = i - 1
while j >= 0 and arr[j] > key:
arr[j + 1] = arr[j]
j -= 1
arr[j + 1] = key
return arr
print(insertion_sort([5, 2, 8, 1, 9]))أهم النقاط
| النقطة | الوظيفة |
|---|---|
| التعقيد الزمني | O(n²) بأسوأ حالة، O(n) بأفضل حالة (مرتّبة سلفًا تقريبًا) |
| التعقيد المكاني | O(1) |
| مستقرّة؟ | نعم |
💡 نصائح عملية
- الخيار العملي الأفضل بين خوارزميات O(n²) الثلاث لبيانات صغيرة أو شبه مرتّبة
خصائص ذات صلة
🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DSA الكامل بالعربي.