العودة إلى الدورة

الدرس الثامن عشر: فرز الاختيار (Selection Sort): المفهوم والتطبيق

الخوارزميات: من الصفر إلى الاحتراف (دليل المبتدئين)

18. فرز الاختيار (Selection Sort): المفهوم والتطبيق (O(N²))

فرز الاختيار يحسن قليلاً من فرز الفقاعة عن طريق تقليل عدد عمليات التبديل.

المفهوم

يقسم فرز الاختيار القائمة إلى جزأين: مصفوفة فرعية مفرزة والمصفوفة الفرعية المتبقية غير المفرزة. يعثر بشكل متكرر على الحد الأدنى من العناصر من الجزء غير المفرز وينقله إلى نهاية المصفوفة الفرعية المفرزة.

خطوات التطبيق

  1. البدء من الموضع الأول i.
  2. مسح باقي المصفوفة (من i+1 إلى N) للعثور على فهرس أصغر عنصر (min_idx).
  3. تبديل العنصر في i بالعنصر في min_idx.
  4. زيادة 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