Sabtu, 18 Juni 2016

Pengurutan Data pada Java : Bubble Sort dan Selection Sort

Nah, pada kesempatan kali ini saya akan membahas bagaimana cara pengurutan data pada Java. Terdapat beberapa cara pengurutan data dalam Java, diantaranya Bubble Sort, Selection Sort, Insertion Sort dan Merge Sort. Namun, saya hanya akan membahas 2 pengurutan data, yaitu Bubble Sort dan Selection Sort.


1.      Bubble Sort

     “Apa itu Bubble Sort? Mengurutkan gelembung?” Bukan bukan. Disini kita bukan mengurutkan gelembung-gelembung, tapi mengurutkan data-data yang dianalogikan sebagai gelembung didalam air, gelembung yang memiliki bentuk terbesar maka akan mengapung diposisi paling atas dari permukaan air dan gelembung terkecil akan berada di posisi paling bawah secara berurutan. Jadi, maksudnya data yang memiliki nilai terkecil akan berada pada index paling awal dari suatu data dan berurutan sampai ke nilai terbesar (untuk pengurutan secara ascending, sedangkan pengurutan secara descending berlaku sebaliknya).
Bubble sort mengurutkan data dengan cara membandingkan elemen sekarang dengan elemen berikutnya yang dilakukan secara berulang-ulang sampai pada elemen terakhir. Nah, apabila saat membandingkan elemen tidak sesuai dengan urutan yang diinginkan, maka akan terjadi pertukaran (swap).

Berikut contoh sederhana dari Bubble Sort:
·         Pengurutan yang akan dilakukan yaitu secara ascending.
·         Apabila bernilai false maka terjadi pertukaran (swap) .

Data : 7,3,1,5,2

Proses 1 :
7          3          1          5          2          Bandingkan elemen 1 dan 2. (7 < 3 = false).
3          7          1          5          2          Bandingkan elemen 2 dan 3. (7 < 1 = false).
3          1          7          5          2          Bandingkan elemen 3 dan 4. (7 < 5 = false).
3          1          5          7          2          Bandingkan elemen 4 dan 5. (7 < 2 = false).
3          1          5          2          7

Proses 2 :
3          1          5          2          7          Bandingkan elemen 1 dan 2. (3 < 1 = false).
1          3          5          2          7          Bandingkan elemen 2 dan 3. (3 < 5 = true).
1          3          5          2          7          Bandingkan elemen 3 dan 4. (5 < 2 = false).
1          3          2          5          7          Bandingkan elemen 4 dan 5. (5 < 7 = true).

Proses 3 :
1          3          2          5          7          Bandingkan elemen 1 dan 2. (1 < 3 = true).
1          3          2          5          7          Bandingkan elemen 2 dan 3. (3 < 2 = false).
1          2          3          5          7          Bandingkan elemen 3 dan 4. (3 < 5 = true).
1          2          3          5          7          Bandingkan elemen 4 dan 5. (5 < 7 = true).

Maka hasilnya :
1          2          3          5          7

Code :
Menggunakan 2 kali perulangan, perulangan pertama untuk elemen pertama dan perulangan kedua (nilai ditambah 1) untuk elemen berikutnya yang akan dibandingkan.


import java.util.Scanner;
public class BubbleSort {
      Scanner in = new Scanner(System.in);
      private int[] data;
     
      public BubbleSort(){
            this.data = new int[5]; //banyak nilai yang dimasukkan
      }
     
      public void setData(){  //input data
            for(int a=0; a<data.length; a++){
                  System.out.print("Masukkan data ke-"+(a+1)+ " = ");
                  int b = in.nextInt();
                  data[a] = b;
            }
      }
      public void urutData(){ //pengurutan data
            for(int i =0; i<data.length; i++){
                  for(int j = 0; j<data.length-1; j++){
                        if(data[j]>data[j+1]){
                              int temp = data[j];
                              data[j]     = data[j+1];
                              data[j+1] = temp;
                        }
                  }
            }
      }
      public void tampilData(){     //print data
            System.out.println("\nUrutan Ascending");
            for(int a = 0; a<data.length; a++){
                  System.out.println("data ke-"+(a+1)+" = "+data[a]);
            }
      }          
      public static void main(String[] args) {
                  BubbleSort in = new BubbleSort();
                  in.setData();
                  in.urutData();
                  in.tampilData();
            }
      }



Output data



1.      Selection Sort

    Metode pengurutan data selanjutnya adalah Selection Sort atau pengurutan dengan metode pemilihan. Selection Sort ialah metode pengurutan data dengan cara menyeleksi data terkecil(ascending) dan data terbesar(descending) lalu meletakkan elemen tersebut pada indeks awal secara berturut.

Berikut contoh sederhana dari Selection Sort:
Contoh data yang dipakai tetap seperti contoh sebelumnya, yaitu 7,3,1,5,2.

Proses 1 :
7   3   1   5   2              Indeks 1 ditukar dengan indeks 3, karna 7 bukan nilai terkecil.
1   3   7   5   2             

Proses 2 :
1   3   7  5   2               Indeks 2 ditukar dengan indeks 5, karna 3 bukan nilai terkecil
1   2   7  5   3              

Proses 3 :
1   2  7   5   3               Indeks 3 ditukar dengan indeks 5, karna 7 bukan nilai terkecil
1   2  3   5   7

Proses 4 :
1   2   3   5   7              Data sudah terurut.


Code:
Menggunakan dua kali perulangan, perulangan pertama untuk elemen awal dan perulangan kedua untuk elemen yang dibandingkan.

import java.util.Scanner;

public class SelectionSort {
      public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            System.out.print("Masukkan jumlah bilangan : ");
            int bil = in.nextInt();
           
            int[] nilai = new int[bil];
           
            for(int i = 0; i<nilai.length; i++){
                  System.out.print("Masukkan angka ke-"+(i+1)+" = ");
                  int angka = in.nextInt();
                  nilai[i] =angka;
                 
                  for(int j = 0; j<nilai.length-1; j++){
                  int x =i;
                  while(x>0 && nilai[x]<nilai[x-1]){
                        int temp = nilai [x];
                        nilai [x] = nilai[x-1];
                        nilai [x-1] = temp;
                        x--;
                  }
            }
            }
            System.out.print("Hasil pengurutan : ");
            for(int i = 0; i<nilai.length; i++){
                  System.out.print(nilai[i]+" ");
            }
      }
}


Output:


Sekian postingan dari saya, semoga bermanfaat.



source : 
http://www.jagocoding.com/tutorial/764/Bubble_Sort_dan_Selection_Sort_di_Java_Console




Tidak ada komentar:

Posting Komentar