Jawaban Searching - nblognlife

Jawaban Searching

Program Searching

Postingan ini adalah jawaban dari pertanyaan pengunjung sebelumnya pada postingan BinarySearch C++.

JAWABAN 1 :
     Apabila yang dimaksud adalah pencarian tiga data secara berturut-turut berikut ini adalah kode programnya, yang pada intinya menggunakan perulangan.  

/*
      Binary search() C++
      Compiler : Microsoft Visual Studio 2012
      By N.N. Blog
*/
#include <iostream>
using namespace std;
#include <conio.h>
#include <iomanip>

int data[7] = {1, 8, 2, 5, 4, 9, 7};
int cari[3];
int y = 0;

void selection_sort()
{
      int temp, min, i, j;

      for(i=0; i<7;i++)
      {
            min = i;
            for(j = i+1; j<7; j++)
            {
                  if(data[j]<data[min])
                  {
                        min=j;
                  }
            }
            temp = data[i];
            data[i]  = data[min];
            data[min] = temp;
      }
}

void binarysearch()
{
      //searching
      int awal, akhir, tengah, b_flag = 0;
      awal = 0;
      akhir = 7;
      while (b_flag == 0 && awal<=akhir)
      {
            tengah = (awal + akhir)/2;
            if(data[tengah] == cari[y])
            {
                  b_flag = 1;
                  break;
            }
            else if(data[tengah]<cari[y])
                  awal = tengah + 1;
            else
                  akhir = tengah -1;
      }

      if(b_flag == 1)
          cout<<"Data '"<<cari[y]<<"' ditemukan pada index ke-"<<tengah<<endl;
      else
          cout<<"Data '"<<cari[y]<<"' tidak ditemukan\n";

        //increment nilai y, bergeser ke data yang dicari selanjutnya
        y++;
}

int main()
{
      int n;

      cout<<"\t   'BINARY SEARCH'"<<endl;
      cout<<"\t====================="<<endl;
      cout<<"\nData           : ";
      //tampilkan data awal
      for(int x = 0; x<7; x++)
            cout<<setw(3)<<data[x];
      
      cout<<endl;
      cout<<endl;
           
      for(n = 0; n<3;n++)
      {
           cout<<"Data yang ingin Anda cari : ";
           cin>>cari[n];
      }
      
      cout<<"\nData diurutkan : ";
      //urutkan data dengan selection sort
      selection_sort();
      //tampilkan data setelah diurutkan
      for(int x = 0; x<7;x++)
            cout<<setw(3)<<data[x];
    
      cout<<endl;
      cout<<endl;
       
      for(n = 0; n<3;n++)
      {
           binarysearch();
      }
       
      _getche();
      return EXIT_SUCCESS;
 }

Output 
        'BINARY SEARCH'
    =====================

Data     : 1 8 2 5 4 9 7

Data yang ingin Anda cari : 2
Data yang ingin Anda cari : 5
Data yang ingin Anda cari : 7

Data diurutkan : 1 2 4 5 7 8 9

Data '2' ditemukan pada index ke-1
Data '5' ditemukan pada index ke-3
Data '7' ditemukan pada index ke-4


JAWABAN 2 :
     Apabila yang dimaksud adalah melakukan pencarian data dimana data yang dicari kemungkinan terdapat lebih dari satu pada suatu array berikut kode programnya. Untuk pencarian seperti ini biasanya memanfaatkan reserved word 'continue'.  Dengan menggunakan 'continue' program akan tetap melanjutkan pencarian sampai index terakhir meskipun data yang dicari sudah pernah ditemukan sebelumnya. Namun, pada program ini keberadaan reserved word 'continue' tidak begitu terasa, karena jika dihilangkan pun program ini masih akan tetap menghasilkan hasil yang sama. 


/*
      Linear search() C++
      Compiler : Microsoft Visual Studio 2012
      By N.N. Blog
*/
//header file
#include <iostream>
using namespace std;
#include <conio.h>

//deklarasi variabel global
int data [] = {12, 14, 15, 12, 5, 12};

//fungsi utama
int main()
{
      int i, flag = 0, cari;
      int data_ditemukan = 0; //variabel untuk jumlah data ditemukan
     
      cout<<"\tPROGRAM PENCARIAN  ";
      cout<<"\n\t=================";
     
      //tampilkan isi array
      cout<<"\n\nData : \n\t";
      for(i=0; i<6; i++)
      {
         cout<<data[i]<<"\t";
      }
      cout<<"\n\nData yang Anda cari : ";
      cin>>cari;
     
      cout<<endl;

      //pencarian data dengan linear search
      for(i=0;i<6;i++)
      {
         if(data[i]==cari)
         {
             flag = 1;
             data_ditemukan++;
             cout<<"Data yang Anda cari ditemukan pada index ke-"<<i<<"\n";
             
 //Fungsi 'continue' mengarahkan eksekusi ke putaran berikutnya pada perulangan. Coba ganti 'continue' dengan 'break' dan perhatikan hasilnya. 
             continue;
         }
      }

      if(flag!= 1)
            cout<<"Data yang Anda cari tidak ditemukan";

      cout<<"\nJumlah data yang ditemukan : "<<data_ditemukan<<" data"<<endl;

      _getche();
      return EXIT_SUCCESS;
}

Output 
      PROGRAM PENCARIAN
      =================

Data :
          12 14 15 12 5 12

Data yang Anda cari : 12

Data yang Anda cari ditemukan pada index ke-0
Data yang Anda cari ditemukan pada index ke-3
Data yang Anda cari ditemukan pada index ke-5

Jumlah data yang ditemukan : 3 data


[RS]

Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?

Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).

Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.

Terima kasih