Sorting dalam
bahasa Indonesia bisa berarti banyak. Bisa mengelompokkan ataupun mengurutkan. Namun
dalam postingan saya kali ini, sorting adalah berarti mengurutkan. Kali ini
saya akan membuat program yang akan mengurutkan deret angka menggunakan
algoritma Bucket Sort.
Dalam mengurutkan
angka (sorting), terdapat banyak sekali algoritma. Salah satunya adalah Bucket
Sort. Bucket Sort adalah algoritma sorting yang mempartisi deret angka menjadi beberapa
deret yang kemudian dianalogikan menjad ember. Setiap angka dalam deret yang
akan diurutkan diambil satu per satu dan dimasukkan ke ember yang memenuhi
syarat. Embernya sudah harus urut mulai dari ember dengan nilai terkecil. Setelah
itu, angka-angka diurutkan dalam masing-masing ember dan akan diambil lagi dari
ember yang paling kecil terlebih dahulu. Jadilah deret angka yang sudah urut. Berikut
analogi yang saya ambil dari wikipedia.
![]() |
| Sumber: wikipedia.org |
Nah,
pertanyaannya, bagaimana membuat programnya dalam java? Saya akan menunjukkan
source code BucketSort.java di bawah ini. Jalan pikirnya adalah, saya mencari
nilai terbesar dari sebuah deret angka yang akan diurutkan, kemudian nilai itu
saya jadikan banyaknya ember. Embernya adalah ember 0 sampai angka terbesar. Setiap
angka dalam deret akan diambil dan dimasukkan ke ember dengan nilai yang sama
(misal : angka 2 akan dimasukkan ke ember nomer 2). Setelah itu, program akan
mengambil angka2 dari setiap ember secara berurutan (mulai dari yang terkecil).
Begitulah deskripsi program ini. Dan berikut ini adalah kodenya :
import java.util.*;
public class BucketSort {
public static int[] bucketSort(int[] arr) {
int i, j, terbesar = 0;
//membuat array 1D tanpa mendefinisikan panjang arraynya
int[] ember;
/*mencari nilai terbesar dari array yang akan disorting
dalam kodingan ini yaitu array arr[] lalu nilai
terbesarnya dimasukkan ke variabel terbesar*/
for(i = 0; i < arr.length; i++ ) {
if(terbesar < arr[i]){
terbesar = arr[i];
}
}
/*mendefinisikan panjang array ember[] menjadi sepanjang
nilai terbesar + 1 dan digunakan sebagai banyaknya ember*/
ember = new int [terbesar + 1];
/*memasukkan nilai dari array arr[] ke embernya masing2
misal: jika nilai dari arr[3] = 77, maka dia akan dimasukkan
ke ember[77] dan nilai dari ember[77] yang awalnya
adalah 0 di ++ menjadi 1*/
for(i = 0; i < arr.length; i++ ) {
ember[arr[i]]++;
}
/*menjelajahi ember 1 per 1 dari awal dan jika ada nilainya
maka akan dimasukkan ke arr[] secara berurutan. Nanti, jika
sudah semua ember dijelajahi dan dimasukkan semua ke arr[],
maka secara otomatis, arr[] sudah terurutkan angkanya*/
for (i = 0, j = 0; i < ember.length; i++) {
for (; ember[i] > 0; (ember[i])--) {
arr[j] = i;
j++;
}
}
return arr;
}
public static void main(String[] args) {
System.out.print("Berapa data yang mau diurutkan? ");
Scanner sc = new Scanner(System.in);
int panjang = sc.nextInt();
int[] arr = new int[panjang];
//meminta inputan isi array 1 per 1
for(int i = 1; i <= panjang; i++ ){
System.out.print("Angka ke " + i + ": ");
arr[i-1] = sc.nextInt();
}
//menampilkan hasil print array yang belum disort
System.out.print("Sebelum diurutkan: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println("\n");
//mensorting array arr[]
arr = bucketSort(arr);
//menampilkan hasil print array yang sudah disort
System.out.print("Setelah diurutkan: ");
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i] + " ");
}
System.out.println();
}
}
Berikut ini adalah bagaimana program ini berjalan :
Nah, silahkan dicoba program ini dengan inputan yang anda inginkan. InsyaAllah akan terurut angka yang anda inputkan :D Terima kasih sebelumnya dan semoga bermanfaat :D
Nah, silahkan dicoba program ini dengan inputan yang anda inginkan. InsyaAllah akan terurut angka yang anda inputkan :D Terima kasih sebelumnya dan semoga bermanfaat :D


No comments:
Post a Comment