1.
SEARCHING
Pencarian
data sering disebut juga dengan istilah table look-up atau storage and
retrieval information, adalah suatu proses untuk mengumpulkan sejumlah
informasi di dalam pengingat computer dan kemudian mencari kembali informasi
yang diperlukan. Searching merupakan proses yang sangat penting dalam
pengolahan data. Proses pencarian adalah menemukan nilai (data) tertentu didalam
sekumpulan data yang bertipe sama.Sebuah algoritma
pencarian dijelaskan secara luas adalah sebuah algoritma yang menerima masukan
berupa sebuah masalah dan menghasilkan sebuah solusi untuk masalah tersebut,
yang biasanya didapat dari evaluasi beberapa kemungkinan solusi. Algoritma
pencarian (searching algorithm) adalah algoritma yang menerima sebuah Kata
kunci dan dengan langkah-langkah tertentu akan mencari rekaman dengan
kata kunci tersebut. Setelah proses pencarian dilaksanakan, akan
diperoleh salah satu dari dua kemungkinan, yaitu data yang dicari ditemukan
atau tidak ditemukan. Metode pencarian data dapat dilakukan dengan dua
cara yaitu pencarian internal
(internal
searching) dan pencarian
eksternal (external
searching). Pada
pencarian internal, semua rekaman yang diketahui berada dalam pengingat
komputer sedangakan pada pencarian eksternal, tidak semua rekaman yang
diketahui berada dalam pengingat komputer, tetapi ada sejumlah rekaman yang
tersimpan dalam penyimpan luar misalnya pita atau cakram magnetis.
Macam-macam Algoritma (searching)
a. Sequential
Searching
Pencarian
berurutan sering disebut pencarian linear merupakan metode pencarian yang
paling sederhana. Pencarian berurutan menggunakan prinsip sebagai berikut :
data yang ada dibandingkan satu per satu secara berurutan dengan yang dicari
sampai data tersebut ditemukan atau tidak ditemukan. Pada dasarnya, pencarian
ini hanya melakukan pengulangan dari 1 sampai dengan jumlah data. Pada setiap
pengulangan, dibandingkan data ke-i dengan yang dicari. Apabila sama, berarti
data telah ditemukan. Sebaliknya apabila sampai akhir pengulangan tidak ada
data yang sama, berarti data tidak ada. Pada kasus yang paling buruk, untuk N
elemen data harus dilakukan pencarian sebanyak N kali pula.
Algoritma
pencarian berurutan dapat dituliskan sebagai berikut :
1.
i ← 0
2.
ketemu ← false
3.
Selama (tidak ketemu) dan (i <= N) kerjakan
baris 4
4.
Jika (Data[i] = x) maka ketemu ← true, jika
tidak i ← i
+ 1
5.
Jika (ketemu) maka i adalah indeks dari data
yang dicari, jika tidak data tidak ditemukan.
CONTOH PROGRAM
#include <iostream.h>
#include <conio.h>
void main()
{
int i;
int cari,ketemu;
int A[100] ;
cout<<"SEQUENSIAL SEARCHING\n";
cout<<"Masukkan
5 Buah Data : \n\n";
cout<<"----------------------------------------\n";
for
(i=1;i<=5;i++)
{
cout<<"Masukkan data ke-"<<i<<" =
"; cin>>A[i];
}
cout<<endl;
cout<<"Input bilangan yang dicari : ";
cin>>cari;
ketemu=0;
for(i=0;i<=5;i++)
{
if (A[i]==cari)
{
ketemu=1;
cout<<"Data ditemukan pada indeks ke-"<<i;
}
}
if (ketemu==0){
cout<<"Data tidak ditemukan";
}
getch();
}
a. Binary
Search
Salah satu syarat agar pencarian biner
dapat dilakukan adalah data sudah dalam keadaan urut. Dengan kata lain, apabila
data belum dalam keadaan urut, pencarian biner tidak dapat dilakukan. Dalam
kehidupan sehari-hari, sebenarnya kita juga sering menggunakan pencarian biner.
Misalnya saat ingin mencari suatu kata dalam kamus. Prinsip dari pencarian
biner dapat dijelaskan sebagai berikut : mula-mula diambil posisi awal 0 dan
posisi akhir = N - 1, kemudian dicari posisi data tengah dengan rumus (posisi
awal + posisi akhir) / 2. Kemudian data yang dicari dibandingkan dengan data
tengah. Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap
sama dengan posisi tengah –1. Jika lebih besar, porses dilakukan kembali tetapi
posisi awal dianggap sama dengan posisi tengah + 1. Demikian seterusnya sampai
data tengah
sama dengan yang dicari.
Algoritma pencarian biner dapat
dituliskan sebagai berikut :
1.
L ← 0
2.
R ← N - 1
3.
ketemu ← false
4.
Selama (L <= R) dan (tidak ketemu) kerjakan
baris 5 sampai dengan 8
5.
m ← (L + R) / 2
6.
Jika
(Data[m] = x) maka ketemu ← true
7.
Jika (x < Data[m]) maka R ← m – 1
8.
Jika
(x > Data[m]) maka L ← m
+ 1
9.
Jika
(ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak ditemukan.
CONTOH PROGRAM
#include <iostream.h>
#include <conio.h>
#include <string.h>
main ()
{
int jd,no,kiri,kanan,center;
char data[20][50],cari[20];
cout<<"\n\t\t *************************************** \n";
cout<<"\t\t | \t\t\t\t | \n";
cout<<"\t\t | \t Proses Pencarian \t | \n";
cout<<"\t\t | Menggunakan Algoritma Binary Search | \n";
cout<<"\t\t | \t\t\t\t | \n";
cout<<"\t\t *************************************** \n\n\n";
cout<<" Input Jumlah Data : ";
cin>>jd;
cout<<endl;
for (no=0;no<jd;no++)
{
cout<<" Input Data Ke-"<<(no+1)<<" : ";
cin>>data[no];
}
cout<<endl;
cout<<" Input Nilai Dicari : ";
cin>>cari;
kiri=0;
kanan=jd-1;
center=(kanan-kiri)/2;
while ((strcmp(data[center],cari)!=0) && (kiri>=0)&& (kanan<jd) && (kanan>=kiri))
{
if (strcmp (cari,data[center])>0)
{
kiri=center+1;
}
else if (strcmp (cari,data[center])<0)
{
kanan=center-1;
}
center=kiri+(kanan-kiri)/2;
}
cout<<endl;
if (strcmp(data[center],cari)==0)
{
cout<<" Keterangan : Data Ditemukan";
}
else
{
cout<<" Keterangan : Data Tidak Ditemukan";
}
getch();
}