Binary Search dengan bahasa C

Binary Search

           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 ^_^

1 comments :

Write comments
Mastiar
AUTHOR
12 April 2022 at 00:34 delete

terima kasih banyak sangat membantu min

Reply
avatar