Understanding Selection Sort
تخيل عندك ورق كوتشينة مبعثر وعايز ترتبه:
افترض إنه أصغر عنصر مبدئياً
لو لقيت عنصر أصغر، احفظ الـ index بتاعه
حط الأصغر في مكانه الصح (أول مكان غير مترتب)
الآن الجزء الأول مترتب، كرر للباقي
Time - بطيء للقوائم الكبيرة
لأن فيه loop جوه loop
Space - مش محتاج ذاكرة إضافية
بنرتب in-place
مثال: ترتيب المصفوفة [64, 25, 12, 22, 11]
← Swap 64 مع 11 →
← Swap 25 مع 12 →
🎉 المصفوفة مترتبة!
Click "Sort" to begin.
Logs here.
function selectionSort(arr) {
const n = arr.length;
for (let i = 0; i < n - 1; i++) {
// Find minimum in unsorted part
let minIdx = i;
for (let j = i + 1; j < n; j++) {
if (arr[j] < arr[minIdx]) {
minIdx = j;
}
}
// Swap if min is not current
if (minIdx !== i) {
[arr[i], arr[minIdx]] = [arr[minIdx], arr[i]];
}
}
return arr;
}