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:
Posting Komentar