---
title: Sorting Algorithms
localeTitle: خوارزميات الفرز
---
## خوارزميات الفرز

خوارزميات الفرز عبارة عن مجموعة من الإرشادات التي تأخذ مصفوفة أو قائمة كمدخلات وترتيب العناصر في ترتيب معين.

الأنواع الأكثر شيوعًا في الأرقام أو شكل من أشكال الترتيب الأبجدي (يسمى معجم معجم) ، ويمكن أن تكون في ترتيب تصاعدي (من الألف إلى الياء ، من 0 إلى 9) أو تنازلي (ZA ، 9-0).

### لماذا الفرز الخوارزميات هي مهمة

ونظرًا لأن الفرز يمكن أن يقلل في كثير من الأحيان من تعقيد المشكلة ، إلا أنه يعد خوارزمية مهمة في علوم الكمبيوتر. هذه الخوارزميات لها تطبيقات مباشرة في البحث الخوارزميات ، خوارزميات قواعد البيانات ، طرق divide و conquer ، خوارزميات بنية البيانات ، وغيرها الكثير.

### بعض خوارزميات الفرز الشائعة

بعض خوارزميات الفرز الأكثر شيوعًا هي:

*   اختيار نوع
*   فقاعة الفرز
*   ترتيب بالإدراج
*   دمج التصنيف
*   فرز سريع
*   نوع كومة
*   فرز الفرز
*   تصنيف الجذر
*   فرز دلو

### تصنيف خوارزمية الفرز

يمكن تصنيف خوارزميات الفرز وفقًا للمعايير التالية:

1.  على أساس عدد المقايضات أو الانقلاب هذا هو عدد المرات التي تقوم فيها الخوارزمية بتبديل العناصر لفرز الإدخال. `Selection Sort` يتطلب الحد الأدنى لعدد المقايضات.
    
2.  على أساس عدد من المقارنات هذا هو عدد المرات التي تقارن فيها الخوارزمية بين العناصر لفرز الإدخال. باستخدام [تدوين Big-O](https://guide.freecodecamp.org/computer-science/notation/big-o-notation/) ، تتطلب أمثلة خوارزمية الفرز المذكورة أعلاه مقارنات `O(nlogn)` على الأقل في أفضل الحالات ومقارنات `O(n^2)` في أسوأ الحالات لمعظم المخرجات.
    
3.  على أساس Recursion أو Non-Recursion تستخدم بعض خوارزميات الفرز ، مثل `Quick Sort` ، تقنيات متكررة لفرز الإدخال. تستخدم خوارزميات الفرز الأخرى ، مثل `Selection Sort` أو `Insertion Sort` ، تقنيات غير متكررة. وأخيرًا ، تستخدم بعض خوارزميات الفرز ، مثل `Merge Sort` ، كل من الأساليب العودية وغير المتكررة لفرز الإدخال.
    
4.  على أساس الاستقرار ويقال إن خوارزميات الفرز تكون `stable` إذا احتفظت الخوارزمية بالترتيب النسبي للعناصر بمفاتيح متساوية. بمعنى آخر ، يظل عنصرين متكافئين بنفس الترتيب في الناتج الذي تم فرزه كما كانا في الإدخال.
    

*   `Insertion sort` `Merge Sort` و `Bubble Sort` ثابتة
*   `Heap Sort` `Quick Sort` ليست مستقرة

1.  على أساس متطلبات الفضاء الزائد ويقال إن خوارزميات الفرز تكون `in place` إذا كانت تتطلب مساحة إضافية ثابتة `O(1)` للفرز.

*   `Insertion sort` `Quick-sort` `in place` ما حيث نقوم بنقل العناصر حول المحور ولا نستخدم فعليًا صفيفًا منفصلاً وهو ليس الحال في نوع الدمج حيث يجب تخصيص حجم الإدخال مسبقًا لتخزين المخرجات أثناء فرز.
    
*   `Merge Sort` مثالاً `out place` فرز `out place` حيث يتطلب مساحة إضافية للذاكرة لعملياتها.
    

### أفضل تعقيد زمني ممكن لأي فرز يستند إلى المقارنة

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