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