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