Minggu, 07 Oktober 2012

Sorting Dalam Java (Insertion & Selection )

Sampurasun . . .


kali ini saya akan mempostingkan tetang bagaimana men sorting dalam java , kita langsung saja gan . . .

Sorting adalah sebuah proses di mana merankai benda dalam urutan tertentu dan/atau dalam himpunan yang berbeda.

pengertinanya singkatnya yaitu , sorting berarti menyusun , menyusun suatu unsur unsur yang teracak acak menjadi berurutan , di mana bisa secara Ascending (kecil-besar) dan Descending (besar-kecil), tergantug kebutuhan dari si pemakai .

proses Sorting dalam java terbagi menjadi 4 :
  • Insertion 
  • Selection 
  • Merge Sort
  • Quick Sort
dan disini sekarang kan di bahas tentang sorting dengan cara Insertion dan Selection , ayo langsung aja gan pada source code nya ya , hehe :D



Insertion Sort


Algoritma insertion sort yaitu sebuah algoritma sederhana yang cukup efisien untuk mengurutkan sebuah list yang hampir terurut. Cara kerja algoritma ini adalah dengan mengambil elemen list.

satu-per-satu dan memasukkannya di posisi yang benar seperti namanya. Pada array, list yang baru dan elemen sisanya dapat berbagi tempat di array, meskipun cukup rumit. Untuk menghemat memori, implementasinya menggunakan pengurutan di tempat yang membandingkan elemen saat itu dengan elemen sebelumnya yang sudah diurut, lalu menukarnya terus sampai posisinya tepat. Hal ini terus dilakukan sampai tidak ada elemen tersisa di input. Salah satu implementasinya pada kehidupan sehari-hari adalah saat kita mengurutkan kartu remi. Kita ambil kartu satuper-satu lalu membandingkan dengan kartu sebelumnya untuk mencari posisi yang tepat.


public class ClassInsertion {
    public static void main(String[] args) {
         Scanner scan = new Scanner (System.in);
         System.out.print("Masukan angka yang akan di masukan : ");
         int jmlAngka = scan.nextInt();
         System.out.println("");

         int bil[] = new int [jmlAngka];
         for (int i=0;i<jmlAngka;i++){
         System.out.print("Silakan masukan angka "+(i+1)+ "    : ");
         bil[i] = scan.nextInt();}

        InsertionAsc(bil,bil.length);
        System.out.println("\n--------------------------------");
        System.out.print("Hasil pengurutan Ascending        : ");
        for(int i = 0; i < bil.length; i++){
           System.out.print(bil[i] + " ");
        }
        InsertionDesc(bil,bil.length);
        System.out.println("\n--------------------------------");
        System.out.print("Hasil pengurutan Descending       : ");
        for(int i = 0; i < bil.length; i++){
           System.out.print(bil[i] + " ");
        }
        System.out.println("\n--------------------------------");
    }

    static int [] InsertionAsc(int bilangan[], int n)
    {
        for (int i = 1; i < n; i++){
            int j = i;
            int B = bilangan[i];
            while ((j > 0) && (bilangan[j-1] > B)){
            bilangan[j] = bilangan[j-1];
            j--;
            }
          bilangan[j] = B;
        }
        return bilangan;
    }

     static int [] InsertionDesc(int bilangan[], int n)
    {
       for (int i = 1; i < n; i++){
            int j = i;
            int B = bilangan[i];
            while ((j > 0) && (bilangan[j-1] < B)){
            bilangan[j] = bilangan[j-1];
            j--;
            }
           bilangan[j] = B;
        }
        return bilangan;
    }
}


ini dia hasil  nya




Sekarang kita bahas

Selection Sort

algoritma nya yaitu melakukan beberapa kali pass untuk melakukan penyeleksian elemen struktur data. Untuk sorting ascending (menaik), elemen yang paling kecil di antara elemen-elemen yang belum urut, disimpan indeksnya, kemudian dilakukan pertukaran nilai elemen dengan indeks yang disimpan tersebut dengan elemen yang paling depan yang belum urut. Sebaliknya, untuk sorting descending (menurun), elemen yang paling besar yang disimpan indeksnya kemudian ditukar.


public class ClassSelection {
public static void main(String[] args) {

         Scanner scan = new Scanner (System.in);
         System.out.print("Masukan angka yang akan di masukan : ");
         int jmlAngka = scan.nextInt();
         System.out.println("");

         int bil[] = new int [jmlAngka];
         for (int i=0;i<jmlAngka;i++){
         System.out.print("Silakan masukan angka "+(i+1)+ "    : ");
         bil[i] = scan.nextInt();}

        SelectionASC(bil);
        System.out.println("\n--------------------------------");
        System.out.print("Hasil pengurutan Ascending        : ");
        for(int i = 0; i < bil.length; i++){
           System.out.print(bil[i] + " ");
        }
        SelectionDesc(bil);
        System.out.println("\n--------------------------------");
        System.out.print("Hasil pengurutan Descending       : ");
        for(int i = 0; i < bil.length; i++){
           System.out.print(bil[i] + " ");
        }
        System.out.println("\n--------------------------------");
    }

    static int [] SelectionASC (int[] bil) {
        for(int i=0; i<bil.length; i++){
            for(int j=i+1; j<bil.length; j++){
                if(bil[i] > bil[j]){
                    int temp = bil[j];
                    bil[j] = bil[i];
                    bil[i] = temp;
                }
            }
        }
        return bil;
    }

    static int [] SelectionDesc (int[] bil) {
        for(int i=0; i<bil.length; i++){
            for(int j=i+1; j<bil.length; j++){
                if(bil[i] < bil[j]){
                    int temp = bil[j];
                    bil[j] = bil[i];
                    bil[i] = temp;
                }
            }
        }
        return bil;
    }
}

ini di hasilnya 

di lihat dari hasilnya , sebenarnya sama saja , tapi di sini yang membedakan bagai mana memproses data nya , coba lihat lagi algortima programnya yang di atas , kemudian untuk penggunaan nya tergantung kepada programernya masing masing , mana yang lebih efektif untuk di pakai .

jangan lupa untuk pelajari lagi script nya ok ! , kali ini saya tidak mencantumkan dulu komentar dalam script seperti biasanya , nanti kalau ada waktu saya pasti isi dengan komentar script nya , heheh :D

Semoga Bermanfaat  
Hatur Nuhun ,









Tidak ada komentar:

Posting Komentar