Jumat, 08 November 2019

SORTING SELECTION SORT JAVA

Pengertian Selection Sort

Selection sort merupakan teknik sorting yang paling sederhana, hal pertama yang akan dilakukan algoritma selection sort adalah menemukan elemen terkecil dalam array kita dan menukarnya (swap) dengan elemen yang ada di posisi pertama, kemudian algoritma ini akan mengulangi hal yang sama lagi yaitu mencari elemen terkecil yang ada di dalam array dan kemudian menukarnya (swap) dengan elemen yang ada di posisi kedua (mengingat elemen di posisi pertama sudah berhasil kita sorting). Proses ini akan terus berlanjut sampai semua elemen yang ada di dalam array telah berhasil kita sorting.

Sumber : https://medium.com/@opam22/sorting-algorithms-selection-sort-50-100-cafd95ae9f91


CONTOH PROGRAM SELECTION SORT

package belajaralgoritma;
    public class SelectionSortAmir {
        public static void main(String[] args) {
        //auto gen random data
        int[] data = new int [10];
        int panjang = data.length;
        int acak, i, ulang, tmp, pos, min, index;

        System.out.print("data : ");
        for(i=0;i<panjang;i++) {
            acak = (int) (Math.random()*panjang);
            data[i] = acak;
            System.out.print(data[i]);
        }

        //mulai selection sort
        long start = System.nanoTime();
        for(ulang=0;ulang<panjang;ulang++) {
            pos=ulang;
            min=data[ulang];
            for(index=ulang;index<data.length;index++) {
                if(data[index] < min) {
                    min=data[index];
                    pos=index;
                }
            }
            if(pos!=ulang) {
                tmp=data[ulang];
                data[ulang]=data[pos];
                data[pos]=tmp;
            }
        }
        long stop = System.nanoTime();
        System.out.print("\ndata : ");
        for(i=0;i<panjang;i++) {
            System.out.print(data[i]);
        }
        System.out.println("\nWaktu : "+(stop-start));
    }
}



OUTPUT :

Menggunakan 1000 data acak dan waktu proses
















Menggunakan 100 data acak dan waktu proses
















Menggunakan 10 data acak dan waktu proses


PERBANDINGAN WAKTU SORTING BUBBLE SORT BIASA DAN SORTING BUBBLE SORT MODIFIKASI

Pengertian Bubble Sort

Bubble Sort adalah salah satu metode dalam pengurutan suatu data. Sebenarnya bagi seorang programmer sudah tak asing lagi dengan yang namanya pengurutan data. Banyak metode dalam pengurutan data tersebut, namun yang akan kita bahas adalah Pengurutan data Bubble Sort.

Untuk algoritma Bubble Sort hanya memindahkan data dari satu tempat ke tempat yang lain dengan logika pertukaran tempat. Namun Bubble Sort hanya memindahkan data yang ada disebelah nya mau kanan maupun kiri satu per satu sesuai urutan data yang ditentukan.

Secara sederhana, bisa didefenisikan algoritma Bubble Sort adalah pengurutan dengan cara pertukaran data dengan data disebelahnya secara terus menerus sampai dalam satu iterasi tertentu tidak ada lagi perubahan.

Sumber : http://dauren-seo.blogspot.com/2018/02/logika-bubble-sort-di-java-dan-contoh.html

1. CONTOH PROGRAM BUBBLE SORT PADA PEMPROGRAMAN JAVA 

package belajaralgoritma;

public class BubbleSortAmir {

         public static void cetak(int[] bebas) {
            for(int banyak=0;banyak<bebas.length;banyak++) {
                System.out.print(bebas[banyak]);
            }
        }
        public static void main(String[] A) {

            int[] data2 = new int[10];
            int panjang=data2.length;
            for(int i=0; i<panjang; i++){
                int acak = (int)(Math.random()*panjang);
                data2[i]=acak;
            }
            System.out.print("data : ");
            cetak(data2);
       
            long start=System.nanoTime();
            for(int ulang=0;ulang<data2.length;ulang++) {
                for(int index=1;index<data2.length-ulang;index++) {
                    if(data2[index-1]>data2[index]) {
                        int tampung = data2[index-1];
                        data2[index-1]=data2[index];
                        data2[index]=tampung;
                    }
                }
            }
            long stop=System.nanoTime();
            System.out.print("\ndata : ");
            cetak(data2);
            System.out.println("\nWaktu : "+(stop-start));
    }  
}


OUTPUT :

Menggunakan 1000 data acak dan waktu proses










 





Menggunakan 100 data acak dan waktu proses

















Menggunakan 10 data acak dan waktu proses


















2. CONTOH PROGRAM BUBBLE SORT MODIFIKASI PADA PEMPROGRAMAN JAVA

package belajaralgoritma;

public class BubbleSortModifikasiAmir {
     public static void cetak(int[] bebas) {
  for(int banyak=0;banyak<bebas.length;banyak++) {
   System.out.print(bebas[banyak]);
  }
 }

 public static void main(String[] A) {
 
                int[] data2 = new int[10];
  int panjang=data2.length;
  for(int i=0; i<panjang; i++){
   int acak = (int)(Math.random()*panjang);
   data2[i]=acak;
  }
  // manual data
  //int[] data2= {4,3,1,2,5}; //average case
  //int[] data2= {5,4,3,2,1}; //worse case
  //int[] data2= {1,2,3,4,5}; //best case
  boolean cekLagi = true;
 
  System.out.print("data acak : ");
  cetak(data2);
  //mulai bubble sort
 
  long start=System.nanoTime();
  for(int ulang=0;ulang<5&&cekLagi;ulang++) {
   cekLagi = false;
   for(int index=1;index<data2.length-ulang;index++) {
    if(data2[index-1]>data2[index]) {
     int tampung = data2[index-1];
     data2[index-1]=data2[index];
     data2[index]=tampung;
     cekLagi = true;
    }
   }
  }
  long stop=System.nanoTime();
  System.out.print("\ndata urut : ");
  cetak(data2);
  System.out.println("\nWaktu proses : "+(stop-start));
    }
}



OUTPUT :

Menggunakan 1000 data acak dan proses











 




Menggunakan 100 data acak dan proses












 




Menggunakan 10 data acak dan proses