Dalam ilmu komputer, suatu
pencarian struktur data adalah setiap struktur data yang memungkinkan
pengambilan suatu item tertentu dari satu set item, seperti sebuah data khusus
dari suatu database yang bertipe sama. Pencarian berfungsi untuk memvalidasi
(mencocokkan) data.
Metode Searching:
1.
Sequential Search
Sequential
search adalah metode pencarian data yang prosesnya dilakukan dengan membandingkan
data yang dicari dengan masing-masing data didalam suatu data bertipe sama
(array). Pencarian dilakukan dari awal sampai akhir dari data berdasarkan kunci
(key) yang dicari. Pencarian akan berhenti jika data telah ditemukan atau tidak
ada lagi data yang dibandingkan. Metode sequential search dapat digunakan untuk
melakukan pencarian data baik pada array yang sudah terurut maupun belum
terurut (acak).
Contoh:
A = 2 8
4 6 7
5 9
Dilakukan pencarian apakah didalam
data tersebt terdapat nilai 6.
1
2 3 4
5 6 7 i = 1 s/d n
A = 2
8 4 6
7 5 9
x = 6
ketemu ß false
i=1
A[1] <>
{ketemu ß
false}
i=1+1=2
A[2] <>
{ketemu ß
false}
i=2+1=3
A[3] <>
{ketemu ß
false}
i=3+1=4
A[4] <>
{ketemu ß
true}
Hasil dari pencarian data bernilai
6 tersebut ditemukan pada posisi ke-4
Contoh Program:
#include<iostream>
using namespace std;
int main()
{
int i, x, search;
int position, found;
int A[10];
int ans;
cout<<"The amount of data: ";
cin>>x;
for(i=0; i<x; i++)
{
cout<<"\n Data number "<<i<<" : ";
cin>>A[i];
}
cout<<"\n Enter data to search: ";
cin>>search;
found=0;
for(i=0; i<x; i++)
{
if(A[i] == search)
{
found = 1;
position = i;
i = x;
}
}
if(found == 0)
{
cout<<" Data not found!!";
}
else
{
cout<<" Data found on the index: "<<position;
}
}
using namespace std;
int main()
{
int i, x, search;
int position, found;
int A[10];
int ans;
cout<<"The amount of data: ";
cin>>x;
for(i=0; i<x; i++)
{
cout<<"\n Data number "<<i<<" : ";
cin>>A[i];
}
cout<<"\n Enter data to search: ";
cin>>search;
found=0;
for(i=0; i<x; i++)
{
if(A[i] == search)
{
found = 1;
position = i;
i = x;
}
}
if(found == 0)
{
cout<<" Data not found!!";
}
else
{
cout<<" Data found on the index: "<<position;
}
}
2. Binary Search
Binary search merupakan sebuah proses
pencarian data yang sudah terurut, baik dari kecil ke besar maupun dari besar
ke kecil.
Konsep pencariannya dilakukan seperti
berikut:
1.
Tentukankanlah indeks data
pertama dan yang terakhir untuk mencari indeks yang berada ditengah. Contoh: Jumlah
data=20 (tengah=indeks data awal + indeks data akhir)/2 à (1+20)/2=10,5 à
bulatkan kebawah sehingga kita mendapatkan indeks data tengah =10.
2.
Jika lebih kecil, proses
dilakukan kembali tetapi posisi akhir dianggap sama dengan posisi tengah -1.
3.
Jika lebih besar, proses
dilakukan kembali tetapi posisi awal dianggap sama dengan posisi tengah +1.
4.
Pencarian data selesai.
Contoh Program:
#include<iostream>
using namespace std;
int main()
{
int n, A[12], left, right, mid, temp, key, i, j;
bool found = false;
cout<<" The amount of data: ";
cin>>n;
for(i=0; i<n; i++)
{
cout<<" Data number "<<i<<" : ";
cin>>A[i];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(A[j] > A[j+1])
{
temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
cout<<" Data after sorted: ";
for(i=0; i<n; i++)
{
cout<<A[i]<<" ";
}
cout<<"\n Enter data to search: ";
cin>>key;
left=0;
right=n-1;
while(left<=right)
{
mid=(left + right)/2;
if(key == A[mid])
{
found=true;
break;
}
else if(key < A[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
if(found == true)
{
cout<<" Data found on te index: "<<mid;
}
else
{
cout<<" Data not found!!";
}
}
using namespace std;
int main()
{
int n, A[12], left, right, mid, temp, key, i, j;
bool found = false;
cout<<" The amount of data: ";
cin>>n;
for(i=0; i<n; i++)
{
cout<<" Data number "<<i<<" : ";
cin>>A[i];
}
for(i=0; i<n; i++)
{
for(j=0; j<n; j++)
{
if(A[j] > A[j+1])
{
temp = A[j];
A[j] = A[j+1];
A[j+1] = temp;
}
}
}
cout<<" Data after sorted: ";
for(i=0; i<n; i++)
{
cout<<A[i]<<" ";
}
cout<<"\n Enter data to search: ";
cin>>key;
left=0;
right=n-1;
while(left<=right)
{
mid=(left + right)/2;
if(key == A[mid])
{
found=true;
break;
}
else if(key < A[mid])
{
right = mid - 1;
}
else
{
left = mid + 1;
}
}
if(found == true)
{
cout<<" Data found on te index: "<<mid;
}
else
{
cout<<" Data not found!!";
}
}
0 comments:
Post a Comment