تخطَّ إلى المحتوى

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 الكامل بالعربي.