Sorting pada Java - Mari Belajar Coding

07 November 2020

Sorting pada Java

Sorting pada Java

Pengurutan (Sorting) adalah proses menyusun kembali data yang sebelumnya telah disusun dengan suatu pola tertentu, sehingga tersusun secara teratur menurut aturan tertentu. Pengurutan dapat dilakukan secara ascending (menaik) dan descending (menurun). Dalam struktur data, pengurutan data sangat penting untuk data yang bertipe data numerik ataupun karakter.

Contoh :

Data Acak : 5 6 8 1 3 25 10

Ascending : 1 3 5 6 8 10 25

Descending : 25 10 8 6 5 3 1

Bubble Sort
Pemberian Nama “Bubble” dikarenakan proses pengurutannya menyerupai pergerakan gelembung yang keluar dari sebuah gelas bersoda. Yaitu bergerak / berpindah berangsur-angsur ke posisi yang tepat. Bubble Sort mengurutkan data dengan cara membandingkan elemen sekarang (elemen ke-i) dengan elemen berikutnya (elemen ke-(i-1) atau (i+1)). 

Pengurutan Ascending Jika elemen sekarang lebih besar dari elemen berikutnya, dan kemudian kedua elemen tersebut ditukar. Pergerakan elemen dari arah kanan ke kiri.

Pengurutan Descending : Jika elemen sekarang lebih kecil dari elemen berikutnya, dan kemudian kedua elemen tersebut ditukar. Pergerakan elemen dari arah kiri ke kanan.

Metode Bubble Sort adalah algoritma sorting termudah, tetapi terlambat dibanding banyak metode sorting yang lain.

Contoh buat file java SortingBubbleSort.java


class BubbleSort{
	private long [] larik;
	private int jumItem;
	
	public BubbleSort(int max){
		larik = new long[max];
		jumItem = 0;
	}
	
	public void tambah(long nilai){
		larik[jumItem] = nilai;
		jumItem++;
	}
	
	public void baca_larik(){
		for (int j=0; j<jumItem; j++)
		System.out.print(larik[j] + " ");
		System.out.println(" ");
	}
	//ascending

	public void bubbleSort(){
		int i, j;
		for (i=jumItem-1; i>0; i--){
			for (j=0; j<i; j++){
				if (larik[j] > larik[j+1])
				tukar(j, j+1);
			}
			System.out.println("Hasil langkah ke " + (-(i-jumItem)));
			baca_larik();
		}
	}
	
	
	//descending
	/*
	public void bubbleSort(){
		int i, j;
		for (i=jumItem-1; i>0; i--){
			for (j=0; j<i; j++){
				if (larik[j] < larik[j+1])
				tukar(j, j+1);
			}
			System.out.println("Hasil langkah ke " + (-(i-jumItem)));
			baca_larik();
		}
	}
	*/
	
	private void tukar(int a, int b)	{
		long temp = larik[a];
		larik[a] = larik[b];
		larik[b] = temp;
	}
}

class SortingBubbleSort{
	public static void main(String[] args){
		int ukuran = 100;
		BubbleSort deret;
		deret = new BubbleSort(ukuran);
		deret.tambah(23);
		deret.tambah(105);
		deret.tambah(45);
		deret.tambah(87);
		deret.tambah(54);
		System.out.println("Larik awal ");
		deret.baca_larik();
		deret.bubbleSort();
		System.out.println("Larik akhir ");
		deret.baca_larik();
	}
}

Exchange Sort
Sangat mirip dengan Bubble Sort. Banyak yang mengatakan Bubble Sort sama dengan Exchange Sort. Pebedaan untuk keduanya dalam hal cara membandingkan antar elemen-elemennya. Dalam Exchange sort diadakan elemen-elemen yang selalu dapat menjadi elemen pusat (pivot) saat proses pembandingan. Exchange sort membandingkan suatu elemen yang menjadi pusat (pivot) dengan elemen-elemen lainnya dalam array tersebut dan melakukan pertukaran elemen jika diperlukan. 
Contoh buat file java SortingExchangeSort.java


class ExchangeSort{
	private long [] data;
	private int jumItem;
	
	public ExchangeSort(int max){
		data = new long[max];
		jumItem = 0;
	}
	
	public void tambah(long nilai){
		data[jumItem] = nilai;
		jumItem++;
	}
	
	public void cetak(){
		for (int j=0; j<jumItem; j++)
		System.out.print(data[j] + " ");
		System.out.println(" ");
	}
	
	public void exchange_sort(){
		int i, j;
		for (i=0; i<jumItem-1; i++){
			for(j = (i+1); j<jumItem; j++){
			 if (data [i] < data[j])
			 tukar(i,j);
			}
			System.out.print("Hasil langkah ke " +(i+1)+ " :");
			cetak();
			System.out.println();
		}
	}
	
	private void tukar(int a, int b){
		long temp = data[a];
		data[a] = data[b];
		data[b] = temp;
	}
}

class SortingExchangeSort{
	public static void main(String[] args){
		int ukuran = 100;
		ExchangeSort DeretAngka;
		DeretAngka = new ExchangeSort(ukuran);
		DeretAngka.tambah(84);
		DeretAngka.tambah(69);
		DeretAngka.tambah(76);
		DeretAngka.tambah(86);
		DeretAngka.tambah(94);
		DeretAngka.tambah(91);
		System.out.print("Data awal : ");
		DeretAngka.cetak();
		System.out.println();
		DeretAngka.exchange_sort();
		System.out.print("Data akhir : ");
		DeretAngka.cetak();
		System.out.println();
	}
}

Selection Sort
Selection Sort merupakan kombinasi antara sorting dan searching. Untuk setiap proses, akan dicari elemen-elemen yang belum diurutkan. Yang memiliki nilai terkecil atau terbesar akan dipertukarkan ke posisi yang tepat di dalam array. Misalnya untuk putaran pertama, akan dicari data dengan nilai terkecil dan data ini akan ditempatkan di indeks terkecil (data[0]), pada putaran kedua akan dicari data kedua terkecil dan akan ditempatkan di indeks kedua (data[1]). Selama proses, pembandingan dan pengubahan hanya dilakukan pada indeks pembanding saja, pertukaran data secara fisik terjadi pada akhir proses.
Contoh buat file java SortingSelectionSort.java


class SelectionSort{
	private long [] data;
	private int jumItem;
	
	public SelectionSort(int max){
		data = new long[max];
		jumItem = 0;
	}
	
	public void tambah(long nilai){
		data[jumItem] = nilai;
		jumItem++;
	}
	
	public void cetak(){
		for (int j=0; j<jumItem; j++)
		System.out.print(data[j] + " ");
		System.out.println(" ");
	}
	
	public void selection_sort(){
		int i,j,pos;
		for(i=0;i<jumItem-1;i++){
		 pos = i;
		
		 for(j=i+1;j<jumItem;j++){
			 if(data[j] < data[pos])
			 pos = j;
		 }
		 if(pos != i)
		 tukar(pos,i);
		
		 System.out.print("Hasil langkah ke " +(i+1)+ " :");
		 cetak();
		 System.out.println();
		}
	}
	
	private void tukar(int a, int b){
		long temp = data[a];
		data[a] = data[b];
		data[b] = temp;
	}
}

class SortingSelectionSort{
	public static void main(String[] args){
		int ukuran = 100;
		SelectionSort DeretAngka;
		DeretAngka = new SelectionSort(ukuran);
		DeretAngka.tambah(32);
		DeretAngka.tambah(75);
		DeretAngka.tambah(69);
		DeretAngka.tambah(58);
		DeretAngka.tambah(21);
		DeretAngka.tambah(40);
		System.out.print("Data awal : ");
		DeretAngka.cetak();
		System.out.println();
		DeretAngka.selection_sort();
		System.out.print("Data akhir : ");
		DeretAngka.cetak();
		System.out.println();
	}
}

Related Posts

Load comments