Selasa, 24 Juni 2014

Pemrograman Java : Binary Search ( Pencarian Bagi Dua)

Diposting oleh Unknown di 01.02
import java.util.Scanner;
public class latihan5 {
    //property
    private int []data;
    //konstruktor
    public latihan5(int n){
        this.data=new int [n];
    }
    // fungsi set data
    public void SetData(int index, int value){
        if (index >= 0 && index < this.data.length){
            this.data[index]=value;
        }
    }
    //fungsi pencarian bagi dua
    public int Cari(int x){
        int i=0;
        int j= this.data.length-1;
     
        return CariBagiDua(x,i,j);
    }
    // fungsi rekursif pencarian bagi dua
    private int CariBagiDua(int x, int i, int j){
        // cek jarak i ke j
        if ((j-i) >=0){
            // tentukan titik tengah k
            int k = (j+i)/2;
            // cek
            if (x==this.data[k]){
                return k;
            } else if (x < this.data[k]){
                return CariBagiDua(x,i,k-1);
            } else {
                return CariBagiDua(x,k+1,j);
            }
        }else {
            return -1;
            }
        }
    public static void main (String[] args){
        //buat scanner
        Scanner inp=new Scanner(System.in);
        // tanya jumlah data
        System.out.print("jumlah data=");
        int n=inp.nextInt();
        //buat objek
        latihan5 bs1=new latihan5(n);
        //masukakan data
        System.out.println("data harus berurutan dari kesil ke besar.");
        for (int a=0; a<n; a++){
            System.out.print("data ke "+a+" =");
            bs1.SetData(a, inp.nextInt());
        }
        //tanya angka yang di cari
        System.out.print("nilai yang di cari =");
        int x=inp.nextInt();
        //hasil
        System.out.print("data "+x+" ada di index ke"+bs1.Cari(x));
 
    }
}

0 komentar:

 

Miss Galaxy Yoon Template by Ipietoon Blogger Template | Gift Idea