تنفيذ خوارزمية فرز العد في جافا
نشرت: 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 Counting Sort Algorithm.