18. فرز الاختيار (Selection Sort): المفهوم والتطبيق (O(N²))
فرز الاختيار يحسن قليلاً من فرز الفقاعة عن طريق تقليل عدد عمليات التبديل.
المفهوم
يقسم فرز الاختيار القائمة إلى جزأين: مصفوفة فرعية مفرزة والمصفوفة الفرعية المتبقية غير المفرزة. يعثر بشكل متكرر على الحد الأدنى من العناصر من الجزء غير المفرز وينقله إلى نهاية المصفوفة الفرعية المفرزة.
خطوات التطبيق
- البدء من الموضع الأول
i. - مسح باقي المصفوفة (من
i+1إلى N) للعثور على فهرس أصغر عنصر (min_idx). - تبديل العنصر في
iبالعنصر فيmin_idx. - زيادة
iوالتكرار حتى يتم فرز المصفوفة بأكملها.
python def selection_sort(arr): n = len(arr) for i in range(n): min_idx = i for j in range(i + 1, n): if arr[j] < arr[min_idx]: min_idx = j
# Swap the found minimum element with the current element (arr[i])
arr[i], arr[min_idx] = arr[min_idx], arr[i]
return arr