/**
* Title : Pencarian biner
* Deskripsi: Mendemonstrasikan pencarian elemen array dengan konsep biner
*/
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PencarianBiner
{
/** Main method */
public static void main(String[] args) throws IOException
{
int[] deretanTerurut = new int[10];
System.out.println("\nPROGRAM PENCARIAN BINER");
System.out.println("-----------------------\n");
// Membuat list yang terurut dan menampilkannya ke console
System.out.print("Deretan bilangan terurut ");
for (int i=0; i<deretanTerurut.length; i++)
{
deretanTerurut[i] = 2*i + 1;
System.out.print(deretanTerurut[i] + " ");
}
System.out.println();
// Mengintruksikan user untuk memasukkan kunci
// Kunci ini adalah nilai elemen yang akan dicari
System.out.print("\nMasukkan kunci : ");
int kunci = InputConsole.readInt();
int indeksElemen = cariKunci(kunci, deretanTerurut);
if (indeksElemen != -1)
System.out.println("\nKunci ditemukan pada indeks ke " + indeksElemen);
else
System.out.println("\nKunci tidak ditemukan pada " + "deretan ini");
}
/** Method mencari kunci dari deretan terurut */
public static int cariKunci(int kunci, int[] deretanTerurut)
{
int indeksTerkecil = 0; // Nilai awal indeks elemen array selalu dimulai 0
int indeksTerbesar = deretanTerurut.length - 1;
return cariKunci(kunci, deretanTerurut, indeksTerkecil, indeksTerbesar);
}
/* Proses pencarian */
public static int cariKunci(int kunci, int[] deretanTerurut, int indeksTerkecil, int indeksTerbesar)
{
// Keluar dari proses pencarian karena tidak ditemukan kunci
if (indeksTerkecil > indeksTerbesar)
return -1;
int indeksTengah=(indeksTerkecil + indeksTerbesar)/2;
if (kunci < deretanTerurut[indeksTengah])
return cariKunci(kunci, deretanTerurut, indeksTerkecil, indeksTengah-1);
else if (kunci == deretanTerurut[indeksTengah])
return indeksTengah;
else
return cariKunci(kunci, deretanTerurut, indeksTengah+1, indeksTerbesar);
}
}
2 comments:
bagus..
thanks ya, berkunjung lagi ya ^^
Post a Comment