Sabtu, 07 Juli 2012

Program Binary Search Di C++


Pada postingan ini adalah penerapan dari Konsep Binary Search. Program C++ dibuat menggunakan aplikasi Borland C++ ver. 5.02 berdasarkan algoritma berikut :
  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
    Binary Search.cpp
     /* Program : Binary Search
        Karya   : blog-sharings.blogspot.com */

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

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

       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;
        tengah=(kanan-kiri)/2;

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

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

        getch();
    }

4 komentar:

Posting Komentar

Tinggalkan Komentar Anda Untuk Memajukan Blog Ini