"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > خوارزمية فرز التحديد

خوارزمية فرز التحديد

تم النشر بتاريخ 2024-11-07
تصفح:216

Selection Sort Algorithm

ما هو فرز التحديد؟

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

خطوات الخوارزمية

  1. ابدأ بالعنصر الأول في المصفوفة وافترض أنه الأصغر.
  2. مقارنة هذا العنصر مع العناصر الأخرى في المصفوفة.
  3. إذا وجدت عنصرًا أصغر، قم بتبديله بالعنصر الأول.
  4. الانتقال إلى العنصر التالي في المصفوفة وتكرار العملية للعناصر المتبقية غير المصنفة.
  5. استمر في هذه العملية حتى يتم فرز المصفوفة بأكملها.
#Suppose we have the following array:

arr = [64, 25, 12, 22, 11]

تمرير 1:

  • أصغر عنصر بين الفهرس 0 وبقية المصفوفة هو 11.
  • نستبدل 64 بـ 11.

المصفوفة بعد التمريرة الأولى: [11, 25, 12, 22, 64]

تمرير 2:

  • الآن، ركز على المصفوفة الفرعية بدءًا من الفهرس 1. أصغر عنصر بين 25، 12، 22، 64 هو 12.
  • نستبدل 25 بـ 12.

المصفوفة بعد التمريرة الثانية: [11, 12, 25, 22, 64]

تمرير 3:

  • أصغر عنصر بين 25، 22، 64 هو 22.
  • نستبدل 25 بـ 22.

المصفوفة بعد التمريرة الثالثة: [11, 12, 22, 25, 64]

تمرير 4:

  • تحتوي المصفوفة الفرعية الآن على 25، 64. وبما أنها مرتبة بالفعل، فلا حاجة إلى المبادلة.

المصفوفة المرتبة النهائية: [11، 12، 22، 25، 64]

def selection_sort(arr):
    # Traverse through all array elements
    for i in range(len(arr)):
        # Find the minimum element in the remaining unsorted part
        min_index = i
        for j in range(i 1, len(arr)):
            if arr[j] 



المصفوفة المرتبة: [11، 12، 22، 25، 64]

التعقيد الزمني لفرز التحديد:

  • أفضل حالة: O(n²)

  • متوسط ​​الحالة: O(n²)

  • أسوأ حالة: O(n²)

على الرغم من أن فرز التحديد يؤدي أداءً جيدًا لمجموعات البيانات الصغيرة، إلا أنه ليس مثاليًا للصفائف الأكبر حجمًا لأن تعقيده الزمني هو O(n²). ومع ذلك، فهو سهل التنفيذ ويمكن أن يكون مفيدًا في الحالات التي تكون فيها الذاكرة مشكلة، حيث أن فرز التحديد يكون في مكانه (لا يتطلب ذاكرة إضافية).

المزايا والعيوب

المزايا:

  • سهلة الفهم والتنفيذ.

  • يحقق أداءً جيدًا في القوائم الصغيرة.

  • لا يتطلب ذاكرة إضافية لأنه يقوم بفرز المصفوفة في مكانها.

العيوب:

  • غير فعال بالنسبة لمجموعات البيانات الكبيرة بسبب تعقيد الوقت O(n²).

  • إنها ليست خوارزمية فرز مستقرة، مما يعني أن العناصر المتساوية قد لا تحافظ على ترتيبها بالنسبة لبعضها البعض.

بيان الافراج يتم استنساخ هذه المقالة على: https://dev.to/shubham_kharche_05/selection-sort-algorithm-2g63؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفه.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3