132- كورس لغة بايثون Python شرح هياكل البيانات في بايثون – Python Data Structures – Selection Sort

Python Data Structures – Selection Sort

Python Data Structures – Selection Sort

يُعدّ فرز الاختيار (Selection Sort) من أبسط خوارزميات الفرز التي تُستخدم في برمجة الحاسوب. ورغم أنه ليس الأكثر كفاءة، إلا أنه يُعتبر تعليميًا لفهم كيفية عمل الخوارزميات الأساسية. تعتمد فكرة فرز الاختيار على تقسيم القائمة إلى جزئين: الجزء المفروز والجزء غير المفروز، ثم العثور على العنصر الأصغر في الجزء غير المفروز ووضعه في نهاية الجزء المفروز.

كيفية عمل خوارزمية فرز الاختيار

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

تطبيق فرز الاختيار في بايثون مع أمثلة

لتوضيح كيفية عمل فرز الاختيار في بايثون، يمكننا النظر إلى المثال التالي. سنقوم بإنشاء دالة لتطبيق خوارزمية فرز الاختيار على قائمة من الأرقام:

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

# مثال على استخدام الدالة:
my_list = [64, 25, 12, 22, 11]
selection_sort(my_list)
print("القائمة المفروزة:", my_list)
    

في هذا المثال، نقوم بإنشاء دالة باسم selection_sort التي تأخذ قائمة كمدخل. نقوم بتكرار العملية لكل عنصر في القائمة للعثور على العنصر الأصغر واستبداله بالموقع الصحيح في الجزء المفروز. بعد تنفيذ الدالة على القائمة my_list، سيتم طباعة القائمة بعد الفرز لتكون [11, 12, 22, 25, 64].

أمثلة إضافية على فرز الاختيار

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

# قائمة السلاسل النصية
string_list = ["orange", "apple", "banana", "pear"]
selection_sort(string_list)
print("القائمة المفروزة:", string_list)
    

عند تطبيق الدالة selection_sort على قائمة string_list، سيتم فرز السلاسل النصية لتصبح [“apple”, “banana”, “orange”, “pear”]. يوضح هذا المثال كيف يمكن تعديل خوارزمية فرز الاختيار لتعمل مع أنواع مختلفة من البيانات في بايثون.