Sabtu, 07 Juli 2012

Program Binary Search (String) Di C++


Berikut algoritma binary search serta penerapan di C++ :
  1. Input seluruh data kedalam array
  2. Input data yang dicari
  3. Tentukan nilai kiri, kanan, dan tengah dengan rumus :
  1. Kiri sama dengan nol
  2. Kanan lebih kecil dari jumlah data
  3. Tengah sama dengan hasil kanan dikurangi hasil kiri dibagi dua.
  1. Jika elemen tengah tidak sama dengan data yang dicari, maka :
  1. Jika elemen tengah lebih besar dari data yang dicari, maka pencarian dilakukan pada setengah array pertama. Caranya dengan menggunakan perintah kiri sama dengan tengah ditambah satu.
  2. Jika elemen tengah lebih kecil dari data yang dicari, maka pencarian dilakukan pada setengah array berikutnya. Caranya dengan menggunakan perintah kanan sama dengan tengah dikurangi satu.
  3. Tengah sama dengan kiri ditambah (kanan - kiri) dibagi dua.
  1. Jika elemen tengah sama dengan data yang dicari, maka data ditemukan. Sedangkan jika elemen tengah tidak sama dengan data yang dicari, maka data tidak ditemukan.



Program

/* Program : Binary Search
    Karya   : blog-sharings.blogspot.com */

#include <iostream.h>
#include <conio.h>
#include <string.h>

main ()
{
    int jd,no,kiri,kanan,center;
    char data[20][50],cari[20];

   cout<<"\n\t\t *************************************** \n";
   cout<<"\t\t | \t\t\t\t       | \n";
   cout<<"\t\t | \t     Proses Pencarian \t       | \n";
   cout<<"\t\t | Menggunakan Algoritma Binary Search | \n";
   cout<<"\t\t | \t\t\t\t       | \n";
   cout<<"\t\t *************************************** \n\n\n";

    cout<<" Input Jumlah Data  : ";
    cin>>jd;

   cout<<endl;
    for (no=0;no<jd;no++)
    {
        cout<<" Input Data Ke-"<<(no+1)<<"    : ";
       cin>>data[no];
    }

   cout<<endl;
    cout<<" Input Nilai Dicari : ";
    cin>>cari;

    kiri=0;
    kanan=jd-1;
   center=(kanan-kiri)/2;

    while ((strcmp(data[center],cari)!=0) && (kiri>=0)&& (kanan<jd) && (kanan>=kiri))
    {
        if (strcmp (cari,data[center])>0)
       {
           kiri=center+1;
       }
       else if (strcmp (cari,data[center])<0)
       {
           kanan=center-1;
       }
       center=kiri+(kanan-kiri)/2;
    }

   cout<<endl;
    if (strcmp(data[center],cari)==0)
    {
        cout<<" Keterangan         : Data Ditemukan";
    }
    else
    {
        cout<<" Keterangan         : Data Tidak Ditemukan";
   }

    getch();
}

0 komentar:

Posting Komentar

Tinggalkan Komentar Anda Untuk Memajukan Blog Ini