Java'da Sayma Sıralama Algoritmasını Uygulama
Yayınlanan: 2023-01-30Sayma Sıralama Algoritması Nedir?
small ranges of integers
için verimli bir sıralama algoritması olan sayma sıralaması. Giriş dizisindeki her bir değerin oluşum sayısını sayarak ve ardından bu bilgiyi kullanarak her bir değeri çıkış dizisindeki doğru konumuna yerleştirerek çalışır.
Bu algoritmanın zaman karmaşıklığı O(n+k)
şeklindedir; burada n, giriş dizisinin boyutudur ve k, tam sayıların aralığıdır.
CrunchifyCountingSortAlgo.java
İşte Java'da Sayma Sıralaması'nın eksiksiz bir uygulaması. Tercih ettiğiniz IDEA'ya kopyalayın ve çalıştırın.
paket crunchify.com.java.tutorials; java.util.Arrays'i içe aktarın; /** * @yazar Crunchify.com * Program: Java'da Sayma sıralama algoritması nasıl uygulanır? * Sayma sıralaması, bir dizinin öğelerini sıralayan bir sıralama algoritmasıdır * dizideki her benzersiz öğenin oluşum sayısını sayarak. */ genel sınıf CrunchifyCountingSortAlgo { genel statik geçersiz main(String[] args) { // 10 elemanlı tamsayı dizisi int[] crunchifyArray = {9, 3, 6, 6, 1, 12, 32, 29, 2, 9, 3}; crunchifyPrint("Orijinal Dizi: " + Arrays.toString(crunchifyArray)); crunchifyPrint ("\n"); CrunchifyCountingSortAlgo crunchify = yeni CrunchifyCountingSortAlgo(); crunchify.crunchifyCountingSortAlgorithm(crunchifyArray); crunchifyPrint ("\n"); crunchifyPrint("Crunchify Sayma Sıralama Algoritmasının Sonucu: " + Arrays.toString(crunchifyArray)); } özel statik geçersiz crunchifyPrint(String s) { System.out.println(ler); } /** * Yazar: App Shah (Crunchify.com) * * Sayma Sıralama Mantığı: * Bu, küçük tamsayı aralıkları için verimli bir sıralama algoritması olan sayma sıralamasının bir uygulamasıdır. * Girdi dizisindeki her bir değerin oluşum sayısını sayarak çalışır, * ve sonra her değeri çıktı dizisindeki doğru konumuna yerleştirmek için bu bilgiyi kullanmak. * Bu algoritmanın zaman karmaşıklığı O(n+k), * burada n, giriş dizisinin boyutu ve k tam sayıların aralığıdır. */ genel statik int[] crunchifyCountingSortAlgorithm(int[] crunchifyArray) { // getAsInt(): Bir değer varsa, değeri döndürür, aksi takdirde NoSuchElementException'ı atar. int crunchifyMax = Arrays.stream(crunchifyArray).max().getAsInt(); int[] crunchifyCount = new int[crunchifyMax + 1]; // crunchifyGiriş dizisindeki her değerin oluşumunu say for (int i = 0; i < crunchifyArray.length; i++) { crunchifyCount[crunchifyArray[i]]++; crunchifyPrint("crunchifyCount'a 1 ekleniyor[" + crunchifyArray[i] + "], crunchifyCount dizisi şu şekildedir: " + Arrays.toString(crunchifyCount)); } crunchifyPrint ("\n"); int k = 0; for (int i = 0; i <= crunchifyMax; i++) { for (int j = 0; j < crunchifyCount[i]; j++) { crunchifyArray[k++] = i; crunchifyPrint("" + i + " konumuna " + (k - 1) ekleniyor + " çıktı dizisinde, çıktı dizisi şu şekildedir: " + Arrays.toString(crunchifyArray)); } } crunchifyArray'i döndürür; } }
Yukarıdaki programı IntelliJ IDEA veya Eclipse IDE'de bir Java Uygulaması olarak çalıştırmanız yeterlidir ve aşağıdaki gibi sonuçlanacaksınız.
IntelliJ IDEA Konsolu Sonucu
Orijinal Dizi: [9, 3, 6, 6, 1, 12, 32, 29, 2, 9, 3] CrunchifyCount[9]'a 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[3]'e 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[6]'ya 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[6]'ya 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[1]'e 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[12]'ye 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[32]'a 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[29]'a 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[2]'ye 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[9]'a 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] CrunchifyCount[3]'e 1 eklendiğinde, crunchifyCount dizisi şu hale geldi: [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] Çıkış dizisindeki 0 konumuna 1 eklendiğinde, çıktı dizisi şu şekildedir: [1, 3, 6, 6, 1, 12, 32, 29, 2, 9, 3] Çıkış dizisindeki 1 konumuna 2 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 6, 6, 1, 12, 32, 29, 2, 9, 3] Çıkış dizisindeki 2 konumuna 3 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 6, 1, 12, 32, 29, 2, 9, 3] Çıkış dizisindeki 3 konumuna 3 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 1, 12, 32, 29, 2, 9, 3] Çıkış dizisindeki 4. konuma 6 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 12, 32, 29, 2, 9, 3] Çıkış dizisindeki 5. konuma 6 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 32, 29, 2, 9, 3] Çıkış dizisindeki 6. konuma 9 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 9, 29, 2, 9, 3] Çıkış dizisindeki 7. konuma 9 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 9, 9, 2, 9, 3] Çıkış dizisindeki 8. konuma 12 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 9, 9, 12, 9, 3] Çıkış dizisindeki 9. konuma 29 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 9, 9, 12, 29, 3] Çıkış dizisindeki 10. konuma 32 eklendiğinde, çıktı dizisi şu şekildedir: [1, 2, 3, 3, 6, 6, 9, 9, 12, 29, 32] Crunchify Sayma Sıralama Algoritmasının Sonucu: [1, 2, 3, 3, 6, 6, 9, 9, 12, 29, 32] İşlem, çıkış kodu 0 ile tamamlandı
Sayma Sıralama Algoritması Java programının üzerinde çalışırken herhangi bir sorunla karşılaşırsanız bana bildirin.