كيف يحسب على الوجه الأمثل لبيع راندجر الصغير

مقدمة للحساب

يعد العد التنازلي للزراعة غير المقارنات هو خوارزمية للفرز تُستشف عند فرز البخار على نطاق صغير معروف، خلافاً للأصناف القائمة على المقارنة مثل Quicksort أو Mergesort، التي تعتمد على مقارنات عنصري ثنائي، يحدد الكونت سورت الترتيب المصنَّف بحساب تواتر كل قيمة متميزة، ويُنتج عن هذا النهج تعقيدات خطية في ظل ظروف مواتية.

وقد وصفت صحيفة " هارولد ه. سيوارد " لأول مرة في عام 1954 وهي لا تزال تقنية أساسية في علوم الحاسوب، فبساطة هذه الدراسة وكفاءتها تجعلانها مثالية لمهام مثل فرز أعمار الطلاب أو رتبهم أو أي بيانات عن ثديين مع انتشار متواضع، ومن خلال استخدام التخزين المساعد الذي يتناسب مع نطاق القيمة، يتجنب الكونت سورت مقياس أو أو أو أور أون أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أوفد أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أور أوفد أور أور أور أور أور أور أور أور أوفد أور أور أو أي من خلال ذلك.

كيف يحسب أعمال السورت

الآلية الأساسية للحسابات الخاصة هي مباشرة: إنها تُحسب كم مرة تظهر كل قيمة في مجموعة المدخلات، ثم تستخدم ذلك الحساب لحساب الوضع النهائي لكل عنصر، وتتألف العملية من ثلاث مراحل متمايزة:

  1. Counting:] Create a count array of size k (the range of input values), initialized to zero. Iterate through the input array and increment the count for each value.
  2. Computing prefixes:] Transform the count array into a prefix sum array, where each element at index i holds the cumulative count of elements less than or equal to i. This step determines the starting positions for each distinct value in the sorted output.
  3. Placing elements:] Traverse the input array from right to left (for stability), use the count array to find the correct index in the output array, place the element there, and decrement the count. The final output is a sorted copy of the input.

ويعود الخوارزمية إلى صفيفة جديدة مصنَّفة، تاركاً لم يتغير الأصلي، ويوجد بديل يسمى في مكان عدّة Srt]، ولكنه نادراً ما يستخدم لأنه يعرّض الاستقرار أو الكفاءة الفضائية للخطر.

"إكسبول"

Consider sorting the array [4, 2, 8, 3, 1] where values range from 0 to 8.

  1. Count:] count array size 9 (0-8) ⁇ [0,2,1,0,0,0,0,1]. (Index 1 appears once, index 2 twice, index 3 twice, index 4 once, index 8 once.)
  2. Prefix sums:] Transform to cumulative ⁇ [0,1,3,5,6,6,7] والآن كل قيمة تخبرنا عن الوضع البادئ لذلك الرقم في الناتج المصنَّف.
  3. Output:] Traverse original array from end: first element read is 1 ⁇ position = count[1] - 1 = 0[0] = 1، حساب الإلغاء [1] to 0. The next is 3 ⁇ position = count[3] - 1 = 4 ⁇ output[4]=3، العد[3]=4. Continue until all elements placed2, output.

ويدل هذا المثال على كيفية تجنب عدّة (سورت) المقارنات كلياً، بالاعتماد فقط على العمليات الحسابية.

التعقيد الحاسوبي

تعقيد الوقت

التعقيد الفضائي

متى تستخدم العد التنازلي

تعدّي (سورت) أكثر فعالية في ظل الظروف التالية:

وتشمل حالات الاستخدام الممتاز رتب فرز (0 إلى 100)، وأعمار (0 إلى 120)، وفئات المنتجات (حتى بضع مئات من وحدات التصنيع الخاصة)، أو كمنتج فرعي في Radix Sort.

القيود والنظر في المسألة

وعلى الرغم من سرعتها، فإن الكونتسورت لديه عيوب تحد من انطباقها:

وتعني هذه القيود كون العد التنازلي هو أداة متخصصة، وليس بديلاً عالمياً عن الخوارزميات العامة الغرض.

مقارنة مع الغوريثامات ذات الصلة

عدّة (سورت) ضدّ (راديكس سورت)

(راديكس سورت) يوسع نطاق الفكرة بفرز أرقام من أقلها أهمية إلى أبعد حد، باستخدام نوع مستقر (في كثير من الأحيان العد التنازلي) في كل رقم، وبينما يتطلب عدّة (سورت) تمرير واحد على كامل النطاق (ك)، فإن (راديكس سورت) يقوم بتصاريح متعددة على نطاق رقمي أصغر (مثل القاعدة 256) مما يقلل من استخدام الذاكرة للكعك الكبير، مثلاً، فإن ترتيب رقم 32 ألفاً

عدّة (سورت) ضدّ (باكيت)

ويوزع سمك السوط عناصر على عدد من الدلوات ويصنف كل دلو فردي (في كثير من الأحيان مع نوع الإدخال) ويمكن اعتبار عدّة سُكرة حالة خاصة من سمك البوكيت سورت حيث يطابق كل دلو قيمة واحدة متميزة.

تنفيذ جدول العد التنازلي

الاستقرار مهم عندما يفرز أحد المفاتيح مع الحفاظ على النظام النسبي للعناصر المتساوية من مفتاح آخر، فالمقياس القياسي للحساب الخاص باللون الخفيف مستقر في جوهره عندما تخترق حلقة التنسيب الناتج المدخلات من اليمين إلى اليسار، وهنا مخطط نصي للخيار المستقر:

  1. صفيفة عدّ مُقارنة كما وصفها.
  2. تحويل مبلغ إلى مبالغ مسبقة (بيانات لكل قيمة في الناتج المصنَّف).
  3. - إعادة ترتيب مجموعة المدخلات حسب الترتيب المعاكس، ووضعها في الموقع الذي تشير إليه عدها، ثم فك الارتباط الذي يحسب.

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

التطبيقات العملية

For more on theory and variants, consult authoritative references such as Wikipedia: countinging Sort and GeeksforGeeks: counting Sort]. Practical comparisons with other algorithms can be found in [FL:4

تحقيق أفضل قدر ممكن من العد التنازلي لـ (لاغ راندغ)

وعندما تكون (ك) كبيرة ولكنها كبيرة أيضاً، يصبح العد النقي للسورت كثيفاً للذاكرة، وهناك عدة أشكال تُحدّد على النحو الأمثل:

خاتمة

(ج) إن العد التنازلي [العملية] هو بمثابة خوارزمية ذات كفاءة ملحوظة لفرز المبردات عندما يكون نطاق القيمة صغيراً مقارنة بعدد العناصر، حيث إن طول الوقت الذي تتسم به الشركة من حيث التعقد والأداء الخطي يجعلها لا غنى عنها في سيناريوهات مثل فرز الصفات، ودرجة الارتداد من نوع (Rdix-Sorttines) وتطبيقات ذات مفاتيح متطورة.