Program Java Sorting Array Dua Dimensi dengan Algoritma BubbleSort



Pengertian Algoritma Sorting adalah kumpulan langkah sistematis atau secara berutan untuk memperoleh hasil yang diinginkan. Salah satu contoh dari algoritma untuk langkah ini adalah Sorting (pengurutan). Sorting dapat didefinisikan sebagai pengurutan sejumlah data berdasarkan nilai tertentu. Pengurutan dapat dilakukan dari nilai terkecil ke nilai terbesar (ascending) atau sebaliknya (descending).

Sorting dapat dibedakan menjadi dua yaitu Comparasion Sort (Bubble Sort, Selection Sort, Insertion Sort, Merge Sort, Quick Sort) dan Non-Comparasion Sort (Radix Sort, Counting Sort). Comparasion Sort / penggurutan dengan pembandingan adalah algoritma yang dalam proses pengurutannya melakukan pembandingan antar data. Non-Comparasion Sort / pengurutan tanpa pembandingan adalah algoritma pengurutan dimana dalam prosesnya tidak melakukan perbandingan antar data.
Dalam Postingan kali ini saya akan membahas bagaimana mengurutkan data menggunakan Algoritma Bubble dan Insertion. 

Buble Sort :
Merupakan algoritma pengurutan paling tua dengan metode pengurutan paling sederhana. Pengurutan yang dilakukan dengan membandingkan masing-masing item dalam suatu list secara berpasangan, menukar item jika diperlukan, dan mengulaginya sampai akhir list secara berurutan, sehingga tidak ada lagi item yang dapat ditukar.

Contoh Program:

public class BubbleAscending {
public static void tampil(String data[][], int indeks ){
         for (int i=0;i<indeks;i++){             System.out.println("");             for(int j = 0;j<3;j++){            System.out.print(data[i][j]+" ");              }         }    }    

    public static void urutinsertion(String data[][], int indeks){    
        for(int i=0; i<indeks; i++){            String min=data[i][0];            int j=i;            while((j>0)&&(min.compareTo(data[j-1][0])<0)){                data[j][0]=data[j-1][0];                j--; }            data[j][0]=min;
    }    }    public static void main(String[] args){          String data[][]={{"Sita","12","P"},{"Agus","12","L"},{"Wahyu","11","L"},{"Indah","12","P"},{"Novita","13","P"},{"Jamal","11","L"},{"Tasya","12","P"},{"Eko","12","L"}};          int indeks = data.length;        System.out.println("Data sebelum diurutkan : ");        tampil(data, indeks);    
        urutinsertion(data,indeks);        System.out.println();   
    
        System.out.println("Data sesudah diurutkan : ");        tampil(data, indeks);    }
}

 Penjelasan:
Ada tiga method dalam program ini yaitu method tampil, urut dan main. Pada method tampil terdapat perulangan for untuk menampilkan nama, method urut berisi fungsi algoritma Bubble Sort untuk mengurutkan nama dengan fungsi for bersarang bertujuan untuk melakukan pengecekan data setiap indeks yang mana akan dibandingkan menggunakan if, jika kondisi pada if terpenuhi maka akan terjadi pertukaran data pada indeks ke i+1 dengan indeks ke i (ascending). Kondisi di dalam if menggunakan method compareTo() yang berguna untuk membandingkan nilai biner dari string, hasil dari compare akan berupa angka yang mana jika hasil lebih dari nol akan terjadi pertukaran data. Dalam proses pertukaran data ini digunakan sebuah variable array sementara untuk menampung semua bilangan yang akan diurutkan. Pada method main, variabel integer indeks berguna sebagai batas perulangan untuk megurutkan maupun menampilkan data yang ada pada array. Pada method ini method tampil dan method urut dipanggil.

Bagaimana jika data yang kita urutkan adalah data array dua dimensi? misalnya dengan menambahkan data umur dan jenis kelamin. Lalu data tersebut diurutkan berdasarkan nama, sedangkan umur dan jenis kelamin mengikuti. 

Contoh Program:
import static java.lang.String.valueOf;import java.util.Arrays;public class Latihan {
public static void tampil(String data[][]){
         for (int i=0;i<data.length;i++)            System.out.println(Arrays.toString(data[i]));    
    }    public static void urut(String data[][], int indeks){        String sementara[] =null;        int ind=data.length;        for(int j=0;j<ind;j++){            for (int i=1;i<ind-j;i++){                if (data[i - 1][indeks].compareTo(data[i][indeks])>0)                {                    sementara = data[i-1];                    data[i-1]=data[i];                    data[i]=sementara;                }            }        }    }    public static void main(String[] args){          String data[][]={{"Sita","12","P"},{"Agus","12","L"},{"Wahyu","11","L"},{"Indah","12","P"},{"Novita","13","P"},{"Jamal","11","L"},{"Tasya","12","P"},{"Eko","12","L"}};    
        System.out.println("Data sebelum diurutkan : ");        tampil(data);        urut(data,0); //urutkan berdasar kolom nama        System.out.println();   
        System.out.println("Data sesudah diurutkan : ");        tampil(data);    }
}
Output :




Penjelasan:
Untuk mengurut data array dua dimensi, maka data dari Strings diurutkan berdasarkan nilai di indeks yang ditunjukkan. Ada 3 kolom indeks yaitu kolom nama, umur dan jenis kelamin. Untuk kolom indeks 0 adalah nama, kolom indeks 1 adalah umur dan kolom indeks 2 adalah jenis kelamin. Pada kolom indeks 0 (nama) adalah primary key. sehingga dalam pengurutan menghasilkan output hasil pengurutan data array berdasarkan kolom indeks nama dan kolom lainnya menyesuaikan.

Jika ada kesalahan, mohon kiranya memberi tahu pada kolom komentar. terimakasih, semoga postingan ini bermanfaat ^^

http://www.resepkuekeringku.com/2014/11/resep-donat-empuk-ala-dunkin-donut.html http://www.resepkuekeringku.com/2015/03/resep-kue-cubit-coklat-enak-dan-sederhana.html http://www.resepkuekeringku.com/2014/10/resep-donat-kentang-empuk-lembut-dan-enak.html http://www.resepkuekeringku.com/2014/07/resep-es-krim-goreng-coklat-kriuk-mudah-dan-sederhana-dengan-saus-strawberry.html http://www.resepkuekeringku.com/2014/06/resep-kue-es-krim-goreng-enak-dan-mudah.html http://www.resepkuekeringku.com/2014/09/resep-bolu-karamel-panggang-sarang-semut-lembut.html