Program java pencarian biner (binary search)

/**
 * 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:

Ay Ti Subang said...

bagus..

Dewi Mulyani said...

thanks ya, berkunjung lagi ya ^^