• Pada Algoritma pencarian banyak yang bisa kita temukan atau gunakan. Ada Merge Sort, Quick Sort, Bubble Sort, dan...
  • Pada dasarnya algoritma searching banyak kita jumpai. Apalagi hanya untuk mencari nilai minimum dan nilai maximum...
  • Kalian pasti sudah tahu apa itu Deret Fibonacci, ya benar. (Padahal gak jawab). Tetapi pada pembahasan kali ini kita akan membuar program...
  • Metoda Pencarian Biner ( Binary Search) hanya bisa diterapkan jika data array sudah terurut. Pengurutan Array bisa menggunakan jenis sorting ...
  • Salah satu contoh tipe algoritma brute force lainnya adalah linear search (pencarian berurutan), Dikatakan demikian karena algoritma ini menggunakan ...

Saturday, May 26, 2012

Program C++ Binary Search








Program C++ Binary SearchMetoda Pencarian Biner ( Binary Search) hanya bisa diterapkan jika data array sudah terurut. Pengurutan Array bisa menggunakan jenis sorting descending atau asscending. Kelebihan dari Searching dengan metode Binary Sort adalah untuk pencarian data yang jumlahnya banyak, waktu pencarian relatif cepat. selain itu beban komputasi juga lebih kecil karena pencarian dilakukan dari depan, belakang, dan tengah. namun ada pula kekurangannya, yaitu data harus disorting dahulu dan Algoritma lebih rumit, tidak baik untuk data berangkai. 

Langsung ke program C++ untuk prakteknya...

#include <cstdlib>
#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
system("color f2");  
int X,i,j,k,p;
int L[10] = {12,14,15,17,23,25,45,67,68,70};
/* Menentukan apakah terurut menaik atau menurun */
/* variabel p digunakan untuk kode, apakah menaik atau menurun */
/* jika p = 0, maka data terurut menaik */
/* jika p = 1, maka data terurut menurun */
if (L[0]<L[9])
{
printf("Data terurut menaik \n");
p = 0;
}
else
{
printf("Data terurut menurun \n");
p = 1;
}
/* input data X yang akan dicari */
printf("Data yang akan dicari = ");scanf("%d",&X);
/* penentuan indeks awal dan akhir semula */
i = 0;
j = 9;
/* proses perulangan untuk menentukan nilai tengah k */
do{
   k = (i + j) / 2;
   if (p==0) // jika data terurut menaik
             {
             if (L[k]==X)
                         {
                         printf("Data ditemukan di elemen %d",k);
                         cout<<"\n\n";
                         system("PAUSE");
                         return EXIT_SUCCESS; // langsung keluar program
                         }
             else if (L[k]< X)
                              {
                              i = k;
                              }
             else
                 {
                 j = k;
                 }
             }
             else // jika data terurut menurun
                  {
                  if (L[k]==X)
                              {
                              printf("Data ditemukan di elemen %d",k);
                              cout<<"\n\n";
                              system("PAUSE");
                              return EXIT_SUCCESS; // langsung keluar program
                              }
                  else if (L[k]> X)
                                 {
                                 i = k;
                                 }
                  else
                      {
                      j = k;
                      }
                  }
             }
while(k!=0); // sampai nilai k = 0, iterasi berakhir
printf("Data tidak ditemukan!");
cout<<"\n\n";
system("PAUSE");
return EXIT_SUCCESS;
}

Jadilah yang pertama mengomentari

Post a Comment

Tutorial Algorithm and Programming ©Template Blogger Green by Dicas Blogger.

To Up