Searching Pada Bahasa C++
Pengertian Searching
Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memory komputer.Dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada dalam internet. Ada beberapa metode yang dapat digunakan untuk searching, ada yang dinamakan:
- Sequential Search
- Binary Search
Sequential Search
Sequential Search merupakan metode pencarian data dalam array dengan cara membandingkan data yang dicari dengan data yang ada di dalam array secara berurutan. Pencarian data dengan Metode Sequential Search efektif untuk mencari data yang dalam posisi yang tidak terurut atau acak.
Algoritmanya dijelaskan seperti berikut:
- Menentukan data yang dicari
- Membaca data array satu per satu secara sekuensial
- Mulai dari data pertama sampai dengan data terakhir, kemudian data yang dicari tadi dibandingkan dengan masing-masing data yang ada di dalam array.
a. Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah temukan.
b. Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa data telah temukan.
Ilustrasi:
![]() |
| Ilustrasi Sequential Search |
data yang dicari yaitu 7 disimpan di variabel x, kemudian akan dibanding satu per satu secara sekuensial terhadap data yang ada dalam array. Jika ditemukan data di dalam array yang sama dengan data yang dicari artinya data ditemukan.
Sequential Searching memiliki Kelebihan dan Kekurangan yaitu:
- Kelebihan Sequential Searching bisa dikatakan lebih mudah dalam implementasinya dalam pemrograman.
- Kekurangannya jika data yang terdapat dalam suatu array itu sangat banyak, maka akan diperlukan waktu yang lebih lama untuk membandingkan data yang dicari dengan jumlah data yang sangat banyak dalam suatu array.
Contoh Program
a. Pseudocode Program
#include <iostream>#include <conio.h>
using namespace std;
int main()
{
cout<<"==============================================="<<endl;
cout<<"=========PROGRAM PENCARIAN DATA ARRAY============"<<endl;
cout<<"======DENGAN TEKNIK SEQUENTIAL SEARCHING========="<<endl;
cout<<"==========================================="<<endl<<endl;
int n,bil_cari,Data[10];
int i,ketemu;
cout<<" Inputan Jumlah Data Dalam Array : "; cin>>n;
cout<<endl;
for(int c=0; c<n; c++)
{
cout<<" Elemen Data Array Ke - "<<c<<" = "; cin>>Data[c];
}
i=0;
cout<<" \n\n Inputkan Bilangan Yang Dicari = "; cin>>bil_cari;
ketemu = 0;
while((i<10) && (ketemu==0))
{
if(Data[i] == bil_cari)
{
ketemu=1;
cout<<" \n Pencarian sequential "<<bil_cari<<" Ada Pada Indeks ke - " <<i;
}
else
i=i+1;
}
if(ketemu == 1)
cout<<"\n Adalah Data Yang Anda Cari "<<endl;
else
cout<<"\n Data Tidak Ditemukan"<<endl;
}
b. Output Program
Binarry Search
Binary search adalah metode pencarian suatu data atau elemen di dalam suatu array dengan kondisi data dalam keadaan terurut. Proses pencarian binary search hanya dapat dilakukan pada sekumpulan data yang sudah diurutkan terlebih dahulu.
Prinsip dari binary search terhadap N elemen dapat dijelaskan seperti berikut:
- Tentukan posisi awal = 0 dan posisi akhir = N-1.
- Hitung posisi tengah = (posisi awal + posisi akhir)/2
- Bandingkan data yang dicari dengan elemen posisi tengah.
- Jika sama maka catat posisi dan cetak kemudian berhenti.
- Jika lebih besar maka akan dilakukan pencarian kembali kebagian kanan dengan posisi awal = posisi tengah +1 dan posisi akhir tetap kemudian ulangi mulai poin 2.
- Jika lebih kecil maka akan di lakukan pencarian kembali ke bagian kiri dengan nilai posisi awal tetap dan nilai posisi akhir = posisi tengah-1 kemudian ulangi mulai poin 2.
Misalkan kita mempunyai sederatan data dalam array nilai sebanyak 10 elemen dan akan dilakukan pencarian data 87 terhadap array.
- Nilai[0..9] = 12,45,23,87,90,55,15,25,40,21
- Urutkan elemen array secara menaik, sehingga diperoleh:
- Nilai[0..9] = 12,15,21,23,25,40,45,55,87,90
- Data yang akan dicari = 87(bilangan)
- Tentukan nilai awal = 0, akhir = N-1=9
- Hitung tengah = (9+0)/2=4
- Bandingkan Bilangan < Nilai[tengah]->87=25->false
- Bandingkan Bilangan < Nilai[tengah]->87<25->false
- Bandingkan Bilangan < Nilai[tengah]->87>25->true maka pencarian dilakukan ke sebelah kanan dengan nilai awal = tengah+1 = 5
- Karena awal masih lebih kecil dari akhir maka ulangi kembali mulai menghitung tengah
- Hitung tengah = (9+5)/2=7
- Bandingkan Bilangan < Nilai[tengah] ->87=55->false
- Bandingkan Bilangan < Nilai[Tengah]->87<55->false
- Bandingkan Bilangan < Nilai[tengah]->87>55->true maka pencarian dilakukan ke sebelah kanan dengan nilai awal = tengah+1 = 8
- Karena awal masih lebih kecil dari akhir maka ulangi kembali mulai menghitung tengah
- Hitung tengah = (9+8)/2 = 8
- Bandingkan Bilangan < Nilai[tengah]->87=87->true
- Karena sudah di tentukan hasilnya maka proses pencarian berhenti.
Contoh Program
a. Pseudocode Program
#include <conio.h>
#include <iomanip>
using namespace std;
int main()
{
//Pendeklarassian variabel
int nilai[20];
int i,j,n;
int temp, awal, akhir, tengah, bilangan;
//Proses penginputan data
cout<<"Masukkan Banyak Data/n : ";
cin>>n;
for(i=0;i<n;i++)
{
cout<<"\nMasukkan Nilai Elemen ke-"<<i<<" = ";
cin>>nilai[i];
}
cout<<"\n\nBerikut Adalah Nilai Elemen Sebelum diurutksn \t= ";
for(i=0;i<n;i++)
{
cout<<setw(3)<<nilai[i];
}
//Proses pengurutan data
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(nilai[i]>nilai[j])
{
temp = nilai[i];
nilai[i]=nilai[j];
nilai[j]=temp;
}
}
}
cout<<"\n\nBerikut Adalah Nilai Elemen Setelah dirutkan \t= ";
for(i=0;i<n;i++)
{
cout<<setw(3)<<nilai[i];
}
cout<<"\n\nIndeks Elemen \t\t\t= ";
for(i=0;i<n;i++)
{
cout<<setw(3)<<i;
}
cout<<"\n\nMasukan data Yang Akan Anda Cari : ";
cin>>bilangan;
//Proses pencarian data
awal = 0;
akhir =n-1;
do
{
tengah = (akhir+awal)/2;
if(bilangan < nilai[tengah])
{
akhir = tengah -1;
}
else
{
awal = tengah +1;
}
}
while((akhir>=awal)&&(nilai[tengah] !=bilangan));
{
if (nilai[tengah]==bilangan)
{
cout<<"\nData "<<bilangan<<" Ada dalam Array";
cout<<"Pada posisi "<<tengah;
}
else
{
cout<<"\nData "<<bilangan<<" tidak ada dalam array\n";
}
}
getch();
return 0;
}
b. Output Program


