MATERI
A. Pengertian Searching
Searching
adalah mencari data yang dibutuhkan. Searching
dalam pemrograman bisa dilakukan untuk mencari data yang ada di dalam memori
komputer. Dalam kehidupan sehari-hari kita juga sering melakukan kegiatan searching seperti mencari data atau
informasi yang ada dalam internet. Ada beberapa metode yang dapat digunakan
untuk searching, ada yang dinamakan:
1. Sequential Search
2. Binary Search
B. 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.
Prosesnya bisa dijelaskan
seperti berikut:
1. Menentukan
data yang dicari
2. Membaca
data array satu per satu secara
sekuensial
3. Mulai
dari data pertama sampai dengan data terakhir, kemudian data yang dicari tadi
dibandingkan dengan masing-masing data yang ada di dalam array.
4. Jika
data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah
temukan.
5. Jika
data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa data
telah temukan.
Sequential Searching memiliki Kelebihan dan Kekurangan. 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.
Ada dua metode yang digunakan pada
Sekuensial ini, yaitu dengan Sentinel atau tanpa menggunakan Sentinel dan
metode itu dapat digunakan pada data yang sudah terurut maupun yang ter acak.
C. Binary
Search
Salah satu syarat pencarian biner (Binary Search) yang dapat dilakukan
adalah data sudah dalam keadaan terurut. Dengan kata lain, apabila data belum
dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam kehidupan sehari-hari, sebenarnya kita sering
menggunakan pencarian biner, misalnya pada saat ingin mencari suatu kata dalam
kamus. Langkah dari pencarian biner adalah sebagai berikut:
1. mula-mula
diambil posisi awal = 1 dan posisi akhir = n
2. kemudian
kita cari posisi data tengah dengan rumus posisi tengah = (posisi awal + posisi
akhir) div 2
3. kemudian
data yang dicari dibandingkan dengan data tengah
a. jika
sama, data ditemukan, proses selesai.
b. jika
lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap sama dengan
posisi tengah - 1.
c. jika
lebih besar, proses dilakukan kembali tetapi posisi awal dianggap sama dengan
posisi tengah + 1.
d. ulangi
langkah 2 sampai data ditemukan, atau tidak ditemukan.
e. Pencarian
biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari
pada posisi akhir. Jika posisi awal sudah lebih besar daripada posisi akhir
berarti data tidak ditemukan.
PERMASALAHAN
Permasalahan yang terdapat
pada laporan praktikum kali ini yaitu :
1. Pencarian
data nama dan nilai dengan menggabungkan dua metode searching (binary dan sequential).
LISTING PROGRAM
#include <iostream>
using namespace std;
int main ()
{
cout<<"NAMA : KEVIN RIZKY ANYA
"<<endl;
cout<<"NIM :1801301026"<<endl;
cout<<endl;
cout<<endl;
cout<<endl;
int n, awal, akhir, tengah,i,data;
string nama[5],pilih,x,absen[5],ok;
cout<<"Pilih Metode Pencarian
:"<<endl;
cout<<"A. Sequential
"<<endl;
cout<<"B. Binary
"<<endl;
kembali:
cout<<"Masukan Pilihan :
";
cin>>pilih;
if
(pilih=="a"||pilih=="A")
{
cout<< "Banyak Data
Adalah : ";
cin>>data;
cout<<endl;
for(i=0;i<data;i++)
{
cout<<"Nama Ke -
"<<i+1<<" : ";
cin>>nama[i];
cout<<"NO Absen :";
cin>>absen[i];
cout<<endl;
}
cout <<"Masukan Data Yang
Dicari : ";
cin>>x;
cout<<endl;
i=0;
ulang:
if(i!=data)
{
if(nama[i]==x)
{
cout<<"Nama Yang
Anda Cari Ditemukan Pada Data Ke-"<<i+1<<endl;
cout<<"Dengan Absen
"<<absen[i];
}
else if (absen[i]==x)
{
cout<<"Absen Yang
Anda Cari Ditemukan Pada Data Ke-"<<i+1<<endl;
cout<<"Dengan Nama
"<<nama[i]<<endl;
}
else
{
i++;
goto ulang;
}
}
else
{
cout<<"Data Tidak Di
Temukan";
}
}
else if
(pilih=="b"||pilih=="B")
{
cout<<"Masukan Jumlah Data :
";
cin>>n;
for(int i=0;i<n;i++)
{
cout<<"Nama
Ke-"<<i+1<<" : ";
cin>>nama[i];
cout<<"NO Absen :";
cin>>absen[i];
cout<<endl;
}
cout<<"Masukan Absen Yang Di
Cari : ";
cin>>x;
awal=0;
akhir=n-1;
do
{
tengah=(awal+akhir)/2;
if (x<absen[tengah])
{
akhir =tengah-1;
}
else
{
awal=tengah+1;
}
}
while
((akhir>=awal)&&(absen[tengah]!=x));
{
if (absen[tengah]==x)
{
cout << "Absen
"<<x<<" Ada Pada Posisi Ke-"<<tengah+1;
cout << "Dengan Nama :
"<<nama[i]<<endl;
}
else
{
cout<<"Data Yang Dicari
Tidak Ditemukan ";
}
}
}
else
{
cout<<"Anda Salah Melakukan
Pilihan"<<endl;
cout<<"Apakah Ingin
Mengulang [Y/T] : ";
cin>>ok;
cout<<endl;
if(ok=="Y"||ok=="y")
{
goto kembali;
}
}
}