SEARCHING ( PENCARIAN )

Assalamu'alaikum wr.wb.
Selamat datang para pembaca yang baik dan sedang belajar bahasa pemrograman, saya senang sekali kalian mengunjungi blog dan membaca artikel ini.Setelah saya menjelaskan tentang SEARCHING(PENCARIAN).




Ada 3 metode pencarian yang akan kita bahas disini:
  1. Pencarian Beruntun (Sekuensial Search)
  2. Pencarian Beruntun dengan sentinel
  3. Pencarian Bagi dua (Binary Search)
untuk bahasa pemerograman yang pertama adalah Pencarian dengan Sekunsial Search atau pencarian beruntun

Apa itu Pencarian Beruntun (Sekuensial Search) ?
Konsep : membandingkan setiap elemen larik satu per satu secara urut (beruntun), mulai dari elemen pertama sampai dengan elemen yang terakhir. Ada 2  macam pencarian beruntun,yaitu pencarian pada array yang sudah terurut, dan pencarian pada array yang belum terurut.

Contoh Pencarian Beruntun :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>
#include <iomanip.h>

void main(){
 int A[]={12,24,13,25,10,13,21,15,15,18};
 int bil;

for(int i=0;i<10;i++){
 cout<<setw(4)<<A[i];}
cout<<endl;
cout<<"Angka yang dicari = ";cin>>bil;
cout<<endl;
for(int i=0;i<10;i++){
 if(A[i]==bil)
 cout<<"angka yang dicari berada di indeks ke-"<<i<<endl;}
getch();}

dan bahasa pemerograman untuk searching yang kedua adalah Pencarian Beruntun dengan Sentinel

Apa itu Pencarian Beruntun Dengan Sentinel ?

Algoritma ini adalah pengembangan dari algoritma pencarian beruntun. Yang dimaksud dengan sentinel adalah elemen fiktif yang sengaja ditambahkan sesudah elemen terakhir dari larik tersebut. Jadi jika elemen terakhir dari larik adalah L[N], maka sentinel diletakkan pada elemen L[N+1]. Akibatnya proses pencarian akan selalu menemukan data yang dicari, akan tetapi harus selalu diperiksa letak data yang ditemukan, apakah:

  1. Di antara elemen-elemen larik yang sesungguhnya(antara L[1] sampai dengan L[N]) Pada elemen fiktif [L[N+1]]
  2. Pada elemen fiktif [L[N+1]]
Algoritma pencarian Sentinel


N = 6 jumlah elemen larik/array semula
 1.Misalkan elemen yang dicari adalah X=21
 Maka, tambahkan 21 sebagai elemen sentinel di L[N+1]:


Elemen yang diperiksa selama pencarian : 13, 16, 14, 21
Elemen larik yang dikembalikan : 4, karena 4 != N+1, berarti X =21 terdapat di dalam larik semula.

2. Misalkan elemen yang dicari adalah X=13
Maka, tambahkan 13 sebagai elemen sentinel di L[N+1]:


Elemen yang diperiksa selama pencarian : 13
Elemen larik yang dikembalikan : 1, karena 1 != N+1, berarti X = 13 terdapat di dalam larik semula.

3. Misalkan elemen yang dicari adalah X=15
Maka, tambahkan 15 sebagai elemen sentinel di L[N+1]:


Elemen yang diperiksa selama pencarian : 13,16,14,21,76,21,15
Elemen larik yang dikembalikan : 7, ditemukan sebagai  elemen sentinel. Karena 7 = N+1, berarti X=15 tidak terdapat di dalam larik semula.

Contoh Pencarian Beruntun Dengan Sentinel
# include <iostream.h>
# include <conio.h>
# include <stdio.h>
# include <math.h>
void main(){
int array[]={1,2,3,4,5}, i=0,x;
cout<<"masukkan data yang akan dicari "; cin>>x;
array[5]=x;
 i=0;
 while(array[i]!=x)
 i++;
 if (i<5)
  {  cout<<"Data Ketemu“;  }
 else
 cout<<"data tidak ditemukan";
getch();}

Dan bahasa pemerograman untuk Searching atau pencarian yang ketiga adalah Binary Search atau pencarian bagi dua

Apa itu Pencarian Bagi Dua (Binary Search) ?
Syarat : Data harus terurut
Salah satu keuntungan data yang terurut adalah memudahkan pencarian, yang dalam hal ini adalah pencarian bagi dua. Sebenarnya dalam kehidupan sehari-hari kita sering menerapkan algoritma ini. Untuk mencari kata tertentu dalam kamus (misalnya kamus bahasa Inggris), kita tidak membuka kamus tersebut dari halaman awal sampai halaman akhir satu persatu, namun kita mencarinya dengan cara membelah atau membagi halaman-halaman buku tersebut. Begitu seterusnya sampai kita menemukan kata yang dicari.

Contoh Pencarian Bagi Dua (Binary Search):
    #include <iostream>
    #include <conio>
    int main() {
      const int arraySize = 5;
      int target;
      // Array size and values already known.
      int array[arraySize] = {1, 2, 3, 4, 5};
      int first, mid, last;
      cout << "Enter a target to be found: ";
      cin >> target;
      // Initialize first and last variables.
      first = 0;     
      last = 4;
      while(first <= last)
  { mid = (first + last)/2;
    if(target > array[mid])
      { first = mid + 1; }
    else if(target < array[mid])
        { last = mid - 1;  }
    else
        { first = last + 1; }
  }
if(target == array[mid])
  { cout << "Target found." << endl; }
Else
  { cout << "Target not found." << endl;  }
getch();  }

Sekian Penjelasan dari materi tentang SEARCHING ( PENCARIAN ),Semoga artikel diatas dapat menambah wawasan bagi pembaca. Assalamu'alaikum wr.wb


0 Komentar untuk "SEARCHING ( PENCARIAN )"

Back To Top