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