public class Squental_search {
public static void main(String[] args) {//main method
int A[] = {12, 65, 23, 79, 44, 90};
//suatu isi array
int cari = 65;
//suatu nilai yang akn dicari dalam sebuah pencarian
int N = 6;
//batas suatu array
//menampilkan data array
System.out.println("Data suatu array");
for (int i = 0; i < A.length; i++) {
//nilai data yang dicari
System.out.print(A[i] + " ");
}
System.out.println("");
for (int i = 0; i < A.length; i++) {
if (cari == A[i]){//mencari data yang akan dicari
System.out.println("data yang ditemukan pada index nomer:"+i);
break;
//berhenti perulangan
}
}
}
}
Outputnya :
Pencarian Biner (Binary Search)
Salah satu syarat agar pencarian biner dapat dilakukan adalah data sudah dalam
keadaan urut. Dengan kata lain, apabila data belum dalam keadaan urut, pencarian biner
tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita juga sering
menggunakan pencarian biner. Misalnya saat ingin mencari suatu kata dalam kamus
Prinsip dari pencarian biner dapat dijelaskan sebagai berikut : 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. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama
dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi posisi awal
dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai data tengah
sama dengan yang dicari.
Berikut contohnya :
public class Binary {
public static void main(String[] args) {
int N = 6;//jumlah index array yang telah ditentukan
int A[] = {9,5,11,68,34,45};// nilai index array
int cari,batasatas, batasbawah;
//tipe data dari variabel tersebut
boolean ketemu;//tipe data
cari= 11;//angka yg ingin dicari
batasatas = 0;//batas atas
batasbawah = N - 1;//algoritma Batas bawah
ketemu = false;//kondisi
int tengah =0;//nilai batas tengah
System.out.println("Data yang diisi");
for (int i = 0; i < A.length; i++) {
System.out.print(A[i] + " ");
}
System.out.println("");
while ((batasatas<=batasbawah)&&(!ketemu)){
//saat batas <= tidak ketemu
tengah = (batasatas+batasbawah) / 2;
//menjelaskan batastas dan batasbawah/2
if(A[tengah]== cari){
ketemu = true;
}else{
if(A[tengah]<cari){
//suatu index array yang dicari
batasatas=tengah++;
}else{
batasatas=tengah--;
//batas bawah --
}
}
}
if(ketemu){
//apabila sudah ketemu
System.out.println("data"+cari+"ditemukan pada index ke" + (tengah+"baris"+(tengah+1)));
//mencetak data diindex tengah
}else{
System.out.println("data"+cari+"tidak ditemukan");
//mencetak suatu data yang ditemukan
}
System.out.println("\n");
}
}
Outputnya:
Awalia Wahyu Juwita
1200631030
No comments:
Post a Comment