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

Selection Sort

ترتيب الاختيار Selection Sort

Selection Sort تبحث عن أصغر عنصر بالجزء غير المرتّب وتضعه بمكانه الصحيح، وتكرّر ذلك حتى تنتهي المصفوفة.

بعكس Bubble Sort، تُجري تبديلًا واحدًا فقط لكل مرور (لا عدة تبديلات) — عدد التبديلات أقل لكن عدد المقارنات نفسه تقريبًا، فتبقى O(n²) أيضًا.

الصياغة

for i in range(n):
    min_index = i
    for j in range(i+1, n):
        if arr[j] < arr[min_index]:
            min_index = j
    arr[i], arr[min_index] = arr[min_index], arr[i]

📄 مثال

def selection_sort(arr):
    n = len(arr)
    for i in range(n):
        min_index = i
        for j in range(i + 1, n):
            if arr[j] < arr[min_index]:
                min_index = j
        arr[i], arr[min_index] = arr[min_index], arr[i]
    return arr

print(selection_sort([5, 2, 8, 1, 9]))

أهم النقاط

النقطةالوظيفة
التعقيد الزمنيO(n²) بكل الحالات — حتى لو المصفوفة مرتّبة سلفًا
التعقيد المكانيO(1)
مستقرّة؟لا — قد تغيّر ترتيب عناصر متساوية نسبيًا

💡 نصائح عملية

  • ميزتها الوحيدة عمليًا: أقل عدد تبديلات ممكن (O(n) تبديل بالضبط) — مفيد لو التبديل مكلف جدًا

خصائص ذات صلة

🎓 تريد فهم الصورة الكاملة خطوة بخطوة؟ ابدأ من مسار DSA الكامل بالعربي.