Java'da Sayma Sıralama Algoritmasını Uygulama

Yayınlanan: 2023-01-30
Java'da Sayma Sıralama Algoritmasını Uygulama

Sayma 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ı 
Java'da Sayma Sıralama Algoritmasını Uygulama - IntelliJ IDEA Sonucu

Sayma Sıralama Algoritması Java programının üzerinde çalışırken herhangi bir sorunla karşılaşırsanız bana bildirin.