0

0

0

share


#Tutorial

Reactions0 Reactions

0 Komentar

Algoritma Bubble Sort dengan Java

Profile

Yudi Setiawan11 Januari 2016

Dalam perancangan dan analisis pemrograman, ada beberapa metode umum yang wajib dipelajari seorang programmer dalam melatih pola pikir algoritmanya yakni, Algoritma Sorting. Pada Algoritma Sorting terdapat banyak metode. Beberapa metode yang saya ketahui ialah, Bubble Sort, Selection Sort, Insertion Sort, Merge Sort dan masih banyak lagi. Nah, pada kesempatan ini saya mau menulis tutorial tentang algoritma dari metode Bubble Sort.

Bubble Sort merupakan salah satu metode sorting yang menurut saya cukup gampang untuk dipelajari. Kenapa gampang? Karena, pada dasarnya Bubble Sort hanya melakukan pemindahan value dari kiri ke kanan untuk Ascending dan dari kanan ke kiri untuk Descending. Seperti nama metodenya yakni, "Bubble Sort" yang berarti menggelembungkan. "Apa yang digelembungkan?" value yang ingin di sorting.

Sebelum masuk ke program, berikut syarat dan langkah-langkah pada metode Bubble Sort:

  1. Jumlah iterasi sama dengan banyaknya bilangan dikurang 1.
  2. Setiap iterasi, jumlah pertukaran bilangannya sama dengan banyaknya bilangan.
  3. Dalam Bubble Sort, walaupun deretan bilangan tersebut sudah ter-sorting maka, proses sorting akan tetap dilakukan.
  4. Tidak ada perbedaan cara untuk Bubble Sort Ascending dan Descending.

Mungkin bagi Anda yang pemula masih bingung dengan kalimat - kalimat diatas, khususnya untuk kata iterasi. Baik saya jelaskan secara sederhana apa itu iterasi, sebenarnya iterasi ialah proses yang dilakukan untuk meng-sorting 1 buah bilangan atau dengan kata lain, iterasi bisa juga disebut dengan proses.

Sekarang saatnya untuk contoh kasus. Pada contoh kasus ini, saya akan menjelaskan untuk kasus Ascending dan Descending

Ascending

Berikut diberikan sebuah deretan bilangan seperti berikut:

5, 12, 3, 19, 1, 47

Langkah Bubble Sort:

Iterasi 1:

5, 12, 3, 19, 1, 47 --> Tidak ada pertukaran. (5 < 12 == true)

5, 3, 12, 19, 1, 47 --> Ada pertukaran. (12 < 3 == false)

5, 3, 12, 19, 1, 47 --> Tidak ada pertukaran. (12 < 19 == true)

5, 3, 12, 1, 19, 47 --> Ada pertukaran. (19 < 1 == false)

5, 3, 12, 1, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Iterasi 2:

3, 5, 12, 1, 19, 47 --> Ada petukaran. (5 < 3 == false)

3, 5, 12, 1, 19, 47 --> Tidak ada pertukaran. (5 < 12 == true)

3, 5, 1, 12, 19, 47 --> Ada pertukaran. (12 < 1 == false)

3, 5, 1, 12, 19, 47 --> Tidak ada pertukaran. (12 < 19 == true)

3, 5, 1, 12, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Iterasi 3:

3, 5, 1, 12, 19, 47 --> Tidak ada pertukaran. (3 < 5 == true)

3, 1, 5, 12, 19, 47 --> Ada pertukaran. (5 < 1 == false)

3, 1, 5, 12, 19, 47 --> Tidak ada pertukaran. (5 < 12 == true)

3, 1, 5, 12, 19, 47 --> Tidak ada pertukaran. (12 < 19 == true)

3, 1, 5, 12, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Iterasi 4:

1, 3, 5, 12, 19, 47 --> Ada pertukaran. (3 < 1 == false)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (3 < 5 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (5 < 12 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (12 < 19 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Iterasi 5:

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (1 < 3 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (3 < 5 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (5 < 12 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (12 < 19 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Iterasi 6:

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (1 < 3 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (3 < 5 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (5 < 12 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (12 < 19 == true)

1, 3, 5, 12, 19, 47 --> Tidak ada pertukaran. (19 < 47 == true)

Jadi, hasil akhir deretan bilangan diatas setelah di Bubble Sort secara Ascending ialah

1, 3, 5, 12, 19, 47

Descending

Masih menggunakan deretan bilangan yang seperti contoh diatas.

5, 12, 3, 19, 1, 47

Langkah Bubble Sort:

Iterasi 1:

12, 5, 3, 19, 1, 47 --> Ada pertukaran. (5 > 12 == false)

12, 5, 3, 19, 1, 47 --> Tidak ada pertukaran. (5 > 3 == true)

12, 5, 19, 3, 1, 47 --> Ada pertukaran. (3 > 19 == false)

12, 5, 19, 3, 1, 47 --> Tidak ada pertukaran. (3 > 1 == true)

12, 5, 19, 3, 47, 1 --> Ada pertukaran. (1 > 47 == false)

Iterasi 2:

12, 5, 19, 3, 47, 1 --> Tidak ada pertukaran. (12 > 5 == true)

12, 19, 5, 3, 47, 1 --> Ada pertukaran. (5 > 19 == false)

12, 19, 5, 3, 47, 1 --> Tidak ada pertukaran. (5 > 3 == true)

12, 19, 5, 47, 3, 1 --> Ada pertukaran. (3 > 47 == false)

12, 19, 5, 47, 3, 1 --> Tidak ada pertukaran. (3 > 1 == true)

Iterasi 3:

19, 12, 5, 47, 3, 1 --> Ada pertukaran. (12 > 19 == false)

19, 12, 5, 47, 3, 1 --> Tidak ada pertukaran. (12 > 5 == true)

19, 12, 47, 5, 3, 1 --> Ada pertukaran. (5 > 47 == false)

19, 12, 47, 5, 3, 1 --> Tidak ada pertukaran. (5 > 3 == true)

19, 12, 47, 5, 3, 1 --> Tidak ada pertukaran. (3 > 1 == true)

Iterasi 4:

19, 12, 47, 5, 3, 1 --> Tidak ada pertukaran. (19 > 12 == true)

19, 47, 12, 5, 3, 1 --> Ada pertukaran. (12 > 47 == false)

19, 47, 12, 5, 3, 1 --> Tidak ada pertukaran. (12 > 5 == true)

19, 47, 12, 5, 3, 1 --> Tidak ada pertukaran. (5 > 3 == true)

19, 47, 12, 5, 3, 1 --> Tidak ada pertukaran. (3 > 1 == true)

Iterasi 5:

47, 19, 12, 5, 3, 1 --> Ada pertukaran. (19 > 47 == false)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (19 > 12 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (12 > 5 ==true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (5 > 3 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (3 > 1 == true)

Iterasi 6:

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (47 > 19 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (19 > 12 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (12 > 5 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (5 > 3 == true)

47, 19, 12, 5, 3, 1 --> Tidak ada pertukaran. (3 > 1 == true)

Jadi, hasil akhir deretan bilangan diatas setelah di Bubble Sort secara Descending ialah

47, 19, 12, 5, 3, 1

Gimana, gampangkan belajar Bubble Sort-nya. Perhatikan tiap langkahnya dimana, agar Anda mudah memahaminya. Nah, it's time to coding.

Ascending

import java.util.Arrays;

/** *

  • @author Yudi Setiawan

*/

public class BubbleSortAsc { public static void main(String[] args) { // Variable int[] bilangan = {5, 12, 3, 19, 1, 47};

	//	Tampilkan bilangan
	System.out.println("Bilangan sebelum di sorting Bubble Sort : "+Arrays.toString(bilangan));
	
	//	Proses Bubble Sort
	System.out.println("\nProses Bubble Sort secara Ascending:");
	for(int a = 0; a &lt; bilangan.length; a++) {
		//	Tampilkan proses Iterasi
		System.out.println("Iterasi "+(a+1));
		for(int b = 0; b &lt; bilangan.length-1; b++) { if(bilangan[b] &gt; bilangan[b+1]) {
				//	proses pertukaran bilangan
				int temp = bilangan[b];
				bilangan[b] = bilangan[b+1];
				bilangan[b+1] = temp;
			}
			
			//	Tampilkan proses pertukaran tiap iterasi
			System.out.println(Arrays.toString(bilangan));
		}
		System.out.println();
	}
	
	//	Tampilkan hasil akhir
	System.out.println("Hasil akhir setelah di sorting: "+Arrays.toString(bilangan));
}

}

Descending

import java.util.Arrays;

/** *

  • @author Yudi Setiawan

*/

public class BubbleSortDesc { public static void main(String[] args) { // Variable int[] bilangan = {5, 12, 3, 19, 1, 47};

	//	Tampilkan bilangan
	System.out.println("Bilangan sebelum di sorting Bubble Sort : "+Arrays.toString(bilangan));
	
	//	Proses Bubble Sort
	System.out.println("\nProses Bubble Sort secara Descending:");
	for(int a = 0; a &lt; bilangan.length; a++) {
		//	Tampilkan proses Iterasi
		System.out.println("Iterasi "+(a+1));
		for(int b = 0; b &lt; bilangan.length-1; b++) {
			if(bilangan[b] &lt; bilangan[b+1]) {
				//	proses pertukaran bilangan
				int temp = bilangan[b];
				bilangan[b] = bilangan[b+1];
				bilangan[b+1] = temp;
			}
			
			//	Tampilkan proses pertukaran tiap iterasi
			System.out.println(Arrays.toString(bilangan));
		}
		System.out.println();
	}
	
	//	Tampilkan hasil akhir
	System.out.println("Hasil akhir setelah di sorting: "+Arrays.toString(bilangan));
}

}

Berikut hasil compile kedua program diatas.

Bubble1