فرز العد هو خوارزمية فرز مستقرة. يستخدم Count Forting مجموعة إضافية من الصفيف ، حيث يكون العنصر I-Th هو عدد العناصر ذات قيمة مساوية لـ I في Array ARR ليتم فرزها. ثم ، وفقًا لـ Array Count_arr ، يتم ترتيب العناصر الموجودة في ARR إلى الموضع الصحيح.
وهي مقسمة إلى أربع خطوات:
1. العثور على أكبر وأصغر العناصر في الصفيف ليتم فرزها
2. الإحصائيات عدد المرات التي يظهر فيها كل عنصر بقيمة I في الصفيف ، وحفظ العنصر I-th من Array Count_arr
3. تراكم جميع التهم (بدءًا من العنصر الأول في Count_arr ، يتم إضافة كل عنصر والبند السابق)
4. اجتياز الصفيف الأصلي بشكل عكسي: ضع كل عنصر I في عنصر Count_arr (i) من الصفيف الجديد ، وطرح Count_arr (i) بمقدار 1 لكل عنصر.
مثال:
نسخة الكود كما يلي:
/**
* فرز العد هو خوارزمية الفرز غير القائمة على القبائل.
* اقترح هارولد هـ. سيوارد هذه الخوارزمية في عام 1954.
* مصلحتها هي أنه عند فرز الأعداد الصحيحة في نطاق معين ،
* تعقيدها هو (n+k) (حيث k هو نطاق الأعداد الصحيحة) ،
* أسرع من أي خوارزمية فرز المقارنة.
*
*/
وظيفة countsort (arr ، min ، max) {
var i ، z = 0 ، count = [] ؛
لـ (i = min ؛ i <= max ؛ i ++) {
العد [i] = 0 ؛
}
لـ (i = 0 ؛ i <arr.length ؛ i ++) {
العد [arr [i]] ++ ؛
}
لـ (i = min ؛ i <= max ؛ i ++) {
بينما (عد [i]-> 0) {
arr [z ++] = i ؛
}
}
إرجاع arr ؛
}
// امتحان
var i ، arr = [] ؛
لـ (i = 0 ؛ i <100 ؛ i ++) {
arr.push (Math.Floor (Math.Random () * (141))) ؛
}
Countsort (arr ، 0 ، 140) ؛