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

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

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





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





فرز التحديد: نظرة فاحصة

افترض أن لديك القائمة: [39 ، 82 ، 2 ، 51 ، 30 ، 42 ، 7]. لفرز القائمة باستخدام فرز التحديد ، يجب عليك أولاً العثور على أعلى رقم فيها.





مع القائمة المحددة ، هذا الرقم هو 82. استبدل الرقم 82 بالرقم الموجود في أعلى مؤشر (أي 7).

بعد المرور الأول ، سيكون ترتيب القائمة الجديد: [39 ، 7 ، 2 ، 51 ، 30 ، 42 ، 82]. في كل مرة تمر فيها الخوارزمية عبر القائمة بأكملها ، يُسمى ذلك 'تمريرة'.



لاحظ أن القائمة تحتفظ بقائمة فرعية مرتبة وقائمة فرعية غير مرتبة أثناء عملية الفرز.

كيفية التبديل إلى بريد جوجل القديم

متعلق ب: ما هو تدوين Big-O؟





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

في التمرير الثاني ، سيكون أعلى رقم في القائمة الفرعية غير المصنفة هو 51. سيتم استبدال هذا الرقم بـ 42 لإعطاء ترتيب القائمة الجديد أدناه:





كيفية تعيين حساب google الافتراضي

[39 ، 7 ، 2 ، 42 ، 30 ، 51 ، 82].

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

تظهر الأرقام باللون الأسود الغامق أعلى قيمة قائمة في ذلك الوقت. تظهر تلك الموجودة باللون الأخضر القائمة الفرعية التي تم فرزها.

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

للحصول على التعقيد (باستخدام تدوين Big-O) لهذه الخوارزمية ، اتبع أدناه:

في التمرير الأول ، يتم إجراء مقارنات (ن -1). في التمريرة الثانية ، (ن -2). في التمريرة الثالثة ، (n-3) وهكذا حتى المرور (n-1) الذي يقوم بإجراء مقارنة واحدة فقط.

يعطي تلخيص المقارنات على النحو التالي:

(ن -1) + (س -1) + (س -1) + ... + 1 = ((س -1) ن) / 2.

لذلك فإن فرز الاختيار هو O (n2).

تنفيذ التعليمات البرمجية

يوضح الكود الوظائف التي يمكنك استخدامها لأداء فرز التحديد باستخدام Python و Java.

بايثون:

def selectionSort(mylist):
for x in range(len(mylist) - 1, 0, -1):
max_idx = 0
for posn in range(1, x + 1):
if mylist[posn] > mylist[max_idx]:
max_idx = posn
temp = mylist[x]
mylist[x] = mylist[max_idx]
mylist[max_idx] = temp

جافا:

void selectionSort(int my_array[]){
for (int x = 0; x {
int index = x;
for (int y = x + 1; y if (my_array[y] index = y; // find lowest index
}
}
int temp = my_array[index]; // temp is a temporary storage
my_array[index] = my_array[x];
my_array[x] = temp;
}}

الانتقال من فرز التحديد إلى دمج الفرز

كما أظهر تحليل الخوارزمية أعلاه ، فإن خوارزمية فرز الاختيار هي O (n2). إنه ذو تعقيد أسي وبالتالي فهو غير فعال لمجموعات البيانات الكبيرة جدًا.

كيفية الحصول على المزيد من ذاكرة الفيديو المخصصة

من الأفضل استخدام خوارزمية هي دمج الفرز مع تعقيد O (nlogn). والآن أنت تعرف كيف يعمل فرز التحديد ، يجب أن يكون ترتيب الدمج التالي في قائمة الدراسة الخاصة بك لفرز الخوارزميات.

يشارك يشارك سقسقة بريد الالكتروني أفضل 8 مواقع لتنزيل الكتب الصوتية مجانًا

تعد الكتب المسموعة مصدرًا رائعًا للترفيه ، كما أنها أسهل في الهضم. إليك أفضل ثمانية مواقع يمكنك تنزيلها مجانًا.

اقرأ التالي
مواضيع ذات صلة
  • برمجة
  • برمجة
  • الخوارزميات
نبذة عن الكاتب جيروم ديفيدسون(تم نشر 22 مقالة)

جيروم كاتب في MakeUseOf. يغطي مقالات عن البرمجة و Linux. إنه أيضًا متحمس للعملات المشفرة ويحتفظ دائمًا بعلامات تبويب في صناعة التشفير.

المزيد من Jerome Davidson

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك