Binary search atau pencarian bagi dua adalah salah satu metode pencarian data salah satu nya Linear Search yang bisa kalian lihat sendiri pada link disamping ,Binary search mempunyai kelebihan dan kekurangan bila dibandingkan dengan Linear search , salahn satu nya binary search pencarian nya lebih cepat tapi agak sedikit susah untuk di mengerti bila dibandingkan dengan Linear Search yang lumayan simpel .
Sebenarnya binary Search ini sering kita terapkan pada kehidupan kita sehari - hari .
salah satu contoh nya yaitu , Saat kita mencari kata di kamus maka kita akan membuka buku itu menjadi dua bagian , dan membuka nya lagi menjadi dua bagian dan seterus nya sampai ketemu , bagaimana jika kalian ingin mencari suatu kata di kamus dengan menggunakan metode linear search ? tentu akan sangat lama ,karena linear search konsep pencarian dengan beruntun dari halaman pertama sampai terakhir dan sebalik nya secara terurut , jadi tidak mungkin mencari nya dengan linear search .
Jadi binary search ini sangat dianjurkan untuk digunakan saat mencari data yang data nya banyak .
Selanjut nya kita akan membahas syntak binary search dengan bahasa C :
#include<stdio.h>
//fungsi untuk mencari angka dengan pencarian bagi dua
int biner ( int cari ,int n , int angka[])
{
//variable untuk menentukan titik awal ,akhir nya
int akhir ,awal ,tengah ,ketemu , i;
akhir = n - 1; awal = 0; ketemu = -1; i = 0;
//Perulangan untuk mencari angka nya dengan kondisi ketemu = -1 dan i < n
while ( ketemu == -1 && i < n )
{
tengah = ( awal+ akhir ) / 2;
/**
*Perkondisian data yang ditengah = cari / ketemu dan pencarian dihentikan karena ketemu = tengah bukan ketemu = -1 jadi tidak memenuhi syarat untuk perulangan lagi
*dan ketemu = tengah , jadi nilai yang dikembalikan ke main nanti adalah indeks ke - tengah / indeks tempat data yang dicari ditemuakn
**/
if ( angka[tengah] == cari )
{
ketemu = tengah;
}
else
{
if ( angka[tengah] < cari )
{
awal = tengah + 1;
}
else
{
akhir = tengah - 1;
}
}i++;
}return ketemu;
}
int main ()
{
int cari , hasil , i , n;
int angka[50];
printf("Berapa data yg ingin di input ( MAX = 50 ) : ");
scanf("%d" , &n);
printf("\nInput angka secara terurut menaik\n");
for ( i = 0; i < n; i ++ )
{
printf("Data ke - %d : ", i+1);
scanf("%d", &angka[i]);
}
printf("Berapa angka yg ingin dicari: ");
scanf("%d", &cari);
hasil = biner ( cari , n ,angka );
if ( hasil == - 1 )
{
printf("\nData tidak ditemukan !! ");
}
else
{
printf("\nAngka %d ditemukan di indeks %d", cari ,hasil+1);
}
return 0;
}
Langkah 1 : Bagi dua elemen larik pada elemen tengah .Elemen tengah adalah elemen dengan indeks tengah = ( awal + akkhir ) / 2 . ( elemen tengah , data[tengah] , membagi larik menjadi dua bagian ,yaitu bagian kiri dan bagian kanan )
Langkah 2 : Periksa apakah data[tengah] = cari . jika data[tengah] = cari maka pencarian selesai ,sebab cari sudah ditemukan dan syarat penrulangan dari WHILE nya sudah tidak terpenuhi .Tetapi , jika tidak ditemukan ,maka harus ditentukan apakah pencarian akan dilakukan di larik bagian kiri atau di bagian kanan . Jika data[tengah] < cari . maka pencarian akan dilakukan dibagian kiri ,sebalik nya jika data[tengah] > cari , maka pencarian akan dilakukan dari sebelah kanan .
Langkah 3 : Ulangi langkah 1 hingga cari ditemukan atau i > n atau larik sudah nol .
oh iya sebelum kita menulis syintax nya maka sebelum nya data yang harus di cari harus lah terurut , misal : 10 , 20 , 30 , 40 ,50 dst . Jika data tidak terurut maka data harus diurutkan dulu dengan sorting .
Pencarian bagi dua ( binary search ) bisa juga dilihat di you tube seperti : di link ini .
Sekian penjelasan singkat dan contoh binary search dari saya dan selamat mencoba ^_^
.jpg)
1 comments :
Write commentsterima kasih banyak sangat membantu min
ReplyEmoticon Emoticon