import javax.swing.JOptionPane;
public class BinarySearch {
public static void main(String args[]) {
// diberikan sebuah array data yang sudah terurut naik
int [] data = {2, 5, 8, 10, 14, 32, 35, 41, 67, 88, 90, 101, 109};
// mengambil input berupa kunci yang akan dicari
String keyStr = JOptionPane.showInputDialog("Data yang dicari:");
// menkonversi tipe String dari hasil input ke int agar sesuai dengan
// tipe data pada array
int keyInt = Integer.parseInt(keyStr);
// penanda untuk pencarian, apakah ketemu atau tidak,
// nilai awal adalah false atau tidak ketemu
boolean ketemu = false;
int idxLeft = 0; // variabel untuk index kiri
int idxRight = data.length - 1; // variabel untuk index kanan
int idxMid = -1; // variabel untuk index tengah
// lakukan perulangan ketika tidak ketemu dan
// index kiri kurang dari atau sama dengan index kanan
while(!ketemu && idxLeft <= idxRight) {
// membagi array menjadi dua bagian, array kiri dan kanan
// dengan index tengah sebagai pemisah
idxMid = (idxLeft + idxRight) / 2;
if(data[idxMid] == keyInt) {
// jika data pada index tengah sama dengan kunci yang dicari
// maka stataus ketemu adalah not false atau true
ketemu = !ketemu;
} else { // jika tidak maka
if(keyInt < data[idxMid]) {
// jika kunci lebih kecil dari data pada index tengah
// maka set index kanan menjadi index tengah - 1
// dan pencarian beralih ke array kiri
idxRight = idxMid - 1;
} else {
// jika kunci lebih besar dari data pada index tengah
// maka set index kiri menjadi index tengah - 1
// dan pencarian beralih ke array kanan
idxLeft = idxMid + 1;
}
}
}
/* ===========================================
* Pernyataan
* x = ekspresi ? nilai1 : nilai2
* sama artinya dengan pernyataan
* if(ekspresi) {
* x = nilai1;
* } else {
* x = nilai2;
* }
* ===========================================
*/
String pesan = ketemu ? "Data ditemukan pada index : " + idxMid : "Data tidak ditemukan";
// Menampilkan pesan hasil pencarian
JOptionPane.showMessageDialog(null, pesan);
// data selalu ketemu pada posisi index tengah
// apabila tidak ketemu nilai index tengah = -1;
}
}
Profile Penulis
Jumlah Pengunjung
PENGUNJUNG BULAN INI
KONTAK KAMI
Friends
Senin, 25 Mei 2009
Binary Search Pada Java
Translate
Daftar Source Code C++
Category
- C++ (21)
- Instal Windows XP (1)
- jaringan (7)
- Java (14)
- Komputer (12)
- Laptop (10)
- laptop kualitas terbaik (1)
- laptop murah (1)
- materi kul (6)
- Printer (2)
- Router (1)
- Tips and Trick (2)
- Tugas2F (1)
- Tutorial (15)