Sunday, January 18, 2015

Binary search Java

Unknown | 4:08 AM |
Binary search

Proses pencarian  Binary search  hanya dapat dilakukan pada kumpulan data yang
sudah  diurutkan  terlebih dahulu. Jika terdapat N buah data yang akan diolah, data
yang dicari akan dibandingkan dengan data ke-N jika data ke-N lebih besar dari data
yang dicari  maka akan dilakukan pembagian data menjadi dua bagian. Pencarian
biner ini akan  berakhir jika data ditemukan atau posisi awal lebih besar daripada
posisi akhir.

Prinsip dari Binary search dapat dijelaskan sebagai berikut :
a.  Mula-mula diambil posisi awal 0 dan posisi akhir = N-1, kemudian dicari posisi
data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data yang
dicari dibandingkan dengan data tengah.
b.  Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1.
c.  Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama
dengan posisi tengah +1.
d.  Jika data sama, berarti data ditemukan.

Contoh:
Misalnya data yang dicari 17 (A=awal, T=tengah, R=akhir):
0   1   2   3   4   5   6   7   8
3   9   11   12   15   17   23   31   35
A         T         R
Karena 17 > 15 (data tengah), maka: awal = tengah + 1
0   1   2   3   4   5   6   7   8
3   9   11   12   15   17   23   31   35
A   T     R
Karena 17 < 23 (data tengah), maka: akhir = tengah – 1
0   1   2   3   4   5   6   7   8
3   9   11   12   15   17   23   31   35
A=T=R
Karena 17 = 17 (data tengah), maka KETEMU dan proses berhenti.

contoh program :
import java.io.*;
public class searchbin2 {
    public int biner(int b[],int pencarian,int low,int high)
    {
    int i, middle;
  
    while (low<=high)
    {
    middle=(low+high)/2;
    if(pencarian==b[middle]) return middle;
    else if(pencarian<b[middle]) high=middle-1;
    else low=middle+1;
    }
    return -1;
    }
          
 
    private static Object Interger;
     public static void main (String[] args)throws IOException{
     BufferedReader bilangan=new BufferedReader (new InputStreamReader(System.in));
    int tanda=0;
    int[] angka=new int[5];
    int hasil,x;
    searchbin2 bin=new searchbin2 ();
      System.out.println(" Masukkan Data : ");
      System.out.println("=================");
    
      for(int i = 0;i<angka.length;i++)
      {
      System.out.println(" Masukkan Data ke "+i+" = ");
      angka[i]=Integer.parseInt(bilangan.readLine());
      }
    
       System.out.println("Angka Yang Dicari = ");
    int cari=Integer.parseInt(bilangan.readLine());
  
    hasil=bin.biner(angka,cari,0,angka.length-1);
  
    if (hasil>=0)
     System.out.println("Angka Yang Dicari di data ke : "+(hasil+1));
    else
        System.out.println("Angka yang di cari gak ada dalam daftar ");
  
    }
}}

No comments:

Post a Comment

Twitter Delicious Facebook Digg Stumbleupon Favorites More

Search

Photo

Photo
Arif wicaksono. Powered by Blogger.