public class Search_Binary {
public static void main(String[] args) {
int A[] = {2, 5, 8, 12, 15, 25, 37, 57};
Scanner input=new Scanner(System.in);//mengambil input berupa kunci yg akan dicari
System.out.println("Data yang dicari : ");
int keyint =input.nextInt();//mengkonversikan tipe data String dari hasil input ke tipe data int agar sesuai dg tipe data array
boolean ketemu = false;//penandaan untuk pencarian ,apakah ketemu atau tidak ketemu
int idxAtas = 0;//varibel untuk index kiri
int idxBawah = A.length - 1;//variabel untuk index kanan
int idxtengah = -1;//variabel untuk index tengah
while ( !ketemu && idxAtas <= idxBawah ) {//perulangan ketika tidak ketemu dan idx kiri kurang dari atau sama dengan idx kanan
idxtengah = (idxAtas + idxBawah) / 2;//membagi array menjadi dua bagian array kiri dan kanan dg idx tengah sbg pemisah
if (A[idxtengah] == keyint) {//data pada idx tengah sama dengan kunci yg dicari maka status ketemu adalah no false atau true
ketemu = !ketemu;
}else if (keyint < A[idxtengah] ){//jika kunci lebih besar dari data pd idx tengah maka set idx kiri menjadi idx tengah +1
//dan pencarian beralih ke array kanan
idxBawah=idxtengah -1;
}else{//mencari bagian kiri
idxAtas=idxtengah +1;
}
}if(ketemu){///perulangan jika nilai yang dicari ditemukan
System.out.println("data ditemukkan pada index :"+A[idxtengah]);
}else{//nilai yang dicari tidak ditemukkan
System.out.println("data tidak ditemukan :"+A[idxtengah]);
}
}
}
output:
jika data tidak ada didalam variabel array:
0 comments:
Post a Comment