تنفيذ خوارزمية فرز العد في جافا

نشرت: 2023-01-30
تنفيذ خوارزمية فرز العد في جافا

ما هي خوارزمية عد الفرز؟

فرز الفرز ، وهو خوارزمية فرز فعالة small ranges of integers . إنه يعمل عن طريق حساب عدد تكرارات كل قيمة في مصفوفة الإدخال ، ثم استخدام هذه المعلومات لوضع كل قيمة في موضعها الصحيح في مصفوفة الإخراج.

التعقيد الزمني لهذه الخوارزمية هو O(n+k) ، حيث n هو حجم مصفوفة الإدخال و k هو نطاق الأعداد الصحيحة.

CrunchifyCountingSortAlgo.java

فيما يلي تنفيذ كامل لفرز العد في Java. ما عليك سوى نسخه إلى IDEA المفضل لديك وتشغيله.

 الحزمة crunchify.com.java.tutorials ؛

استيراد java.util.Arrays ؛

/ **
 *author Crunchify.com
 * البرنامج: كيفية تنفيذ خوارزمية الفرز في جافا؟
 * فرز الفرز عبارة عن خوارزمية فرز تقوم بفرز عناصر المصفوفة 
 * عن طريق حساب عدد تكرارات كل عنصر فريد في المصفوفة.
 * /

فئة عامة CrunchifyCountingSortAlgo {

    العامة الثابتة الفراغ الرئيسي (سلسلة [] args) {

        // مجموعة صحيحة من 10 عناصر
        int [] crunchifyArray = {9، 3، 6، 6، 1، 12، 32، 29، 2، 9، 3} ؛

        crunchifyPrint ("Original Array:" + Arrays.toString (crunchifyArray))؛
        crunchifyPrint ("\ n") ؛

        CrunchifyCountingSortAlgo crunchify = جديد CrunchifyCountingSortAlgo () ؛
        crunchify.crunchifyCountingSortAlgorithm (crunchifyArray) ؛

        crunchifyPrint ("\ n") ؛
        crunchifyPrint ("نتيجة خوارزمية فرز العد Crunchify:" + Arrays.toString (crunchifyArray)) ؛
    }

    crunchifyPrint (سلسلة) باطلة ثابتة خاصة {

        System.out.println (s) ؛
    }


    / **
     * المؤلف: App Shah (Crunchify.com)
     *
     * عد فرز المنطق:
     * هذا تنفيذ لفرز العد ، وهو عبارة عن خوارزمية فرز فعالة لنطاقات صغيرة من الأعداد الصحيحة.
     * يعمل عن طريق حساب عدد تكرارات كل قيمة في مصفوفة الإدخال ،
     * ثم استخدام هذه المعلومات لوضع كل قيمة في موضعها الصحيح في مصفوفة الإخراج.
     * التعقيد الزمني لهذه الخوارزمية هو O (n + k) ،
     * حيث n هو حجم مصفوفة الإدخال و k هو نطاق الأعداد الصحيحة.
     * /


    عمومية ثابتة int [] crunchifyCountingSortAlgorithm (int [] crunchifyArray) {

        // getAsInt (): إذا كانت القيمة موجودة ، فتُرجع القيمة ، وإلا ستُطرح NoSuchElementException.
        int crunchifyMax = Arrays.stream (crunchifyArray) .max (). getAsInt () ؛
        int [] crunchifyCount = new int [crunchifyMax + 1] ؛

        // crunchify احسب تكرارات كل قيمة في مصفوفة الإدخال
        لـ (int i = 0؛ i <crunchifyArray.length؛ i ++) {
            crunchifyCount [crunchifyArray [i]] ++ ؛
            crunchifyPrint ("إضافة 1 إلى crunchifyCount [" + crunchifyArray [i] 
                    + "] ، مصفوفة crunchifyCount هي الآن:" + Arrays.toString (crunchifyCount)) ؛
        }

        crunchifyPrint ("\ n") ؛

        كثافة العمليات ك = 0 ؛
        لـ (int i = 0 ؛ i <= crunchifyMax ؛ i ++) {
            لـ (int j = 0 ؛ j <crunchifyCount [i] ؛ j ++) {
                crunchifyArray [k ++] = i ؛
                crunchifyPrint ("إضافة" + i + "إلى الموضع" + (ك - 1) 
                        + "في مصفوفة الإخراج ، مصفوفة الإخراج هي الآن:" + Arrays.toString (crunchifyArray)) ؛
            }
        }

        عودة crunchifyArray ؛
    }

}

ما عليك سوى تشغيل البرنامج أعلاه كتطبيق Java في IntelliJ IDEA أو Eclipse IDE وستكون النتيجة على النحو التالي.

نتيجة وحدة التحكم IntelliJ IDEA

 المصفوفة الأصلية: [9 ، 3 ، 6 ، 6 ، 1 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]


إضافة 1 إلى crunchifyCount [9] ، مصفوفة crunchifyCount هي الآن: [0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [3] ، مصفوفة crunchifyCount هي الآن: [0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [6] ، فإن مصفوفة crunchifyCount هي الآن: [0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [6] ، مصفوفة crunchifyCount هي الآن: [0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [1] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 0 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [12] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 0 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0]
إضافة 1 إلى crunchifyCount [32] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 0 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1]
إضافة 1 إلى crunchifyCount [29] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 0 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1]
إضافة 1 إلى crunchifyCount [2] ، فإن مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 1 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1]
إضافة 1 إلى crunchifyCount [9] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 1 ، 1 ، 0 ، 0 ، 2 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1]
إضافة 1 إلى crunchifyCount [3] ، مصفوفة crunchifyCount هي الآن: [0 ، 1 ، 1 ، 2 ، 0 ، 0 ، 2 ، 0 ، 0 ، 2 ، 0 ، 0 ، 1 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 0 ، 1 ، 0 ، 0 ، 1]


بإضافة 1 إلى الموضع 0 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 3 ، 6 ، 6 ، 1 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 2 إلى الموضع 1 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 6 ، 6 ، 1 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 3 إلى الموضع 2 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 6 ، 1 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 3 إلى الموضع 3 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 1 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 6 إلى الموضع 4 في صفيف الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 12 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 6 إلى الموضع 5 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 32 ، 29 ، 2 ، 9 ، 3]
بإضافة 9 إلى الموضع 6 في صفيف الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 9 ، 29 ، 2 ، 9 ، 3]
بإضافة 9 إلى الموضع 7 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 9 ، 9 ، 2 ، 9 ، 3]
بإضافة 12 إلى الموضع 8 في مصفوفة الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 9 ، 9 ، 12 ، 9 ، 3]
بإضافة 29 إلى الموضع 9 في صفيف الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 9 ، 9 ، 12 ، 29 ، 3]
بإضافة 32 إلى الموضع 10 في صفيف الإخراج ، أصبح صفيف الإخراج الآن: [1 ، 2 ، 3 ، 3 ، 6 ، 6 ، 9 ، 9 ، 12 ، 29 ، 32]


نتيجة Crunchify Counting Sort Algorithm: [1، 2، 3، 3، 6، 6، 9، 9، 12، 29، 32]

انتهت العملية برمز الخروج 0 
تنفيذ خوارزمية فرز العد في Java - نتيجة IntelliJ IDEA

اسمحوا لي أن أعرف إذا كنت تواجه أي مشكلة قيد التشغيل فوق برنامج Java Counting Sort Algorithm.