SEQUENTIAL SEARCH
Adalah suatu teknik pencarian data dalam array ( 1 dimensi ) yang akan menelusuri semua elemen-elemen array dari awal sampai akhir, dimana data-data tidak perlu diurutkan terlebih dahulu. Kemungkinan terbaik (best case) adalah jika data yang dicari terletak di indeks array terdepan (elemen array pertama) sehingga waktu yang dibutuhkan untuk pencarian data sangat sebentar (minimal). Kemungkinan terburuk (worst case) adalah jika data yang dicari terletak di indeks array terakhir (elemen array terakhir) sehingga waktu yang dibutuhkan untuk pencarian data sangat lama (maksimal)
Berikut adalah Contoh Sequential Search :
#include
#include
main(){
int c,i,posisi;
int A[20]={32,3,4,56,65,3,7,4,7,4,3,5,7,8,4,3,6,7,8,22,};
cout<<"Data : ";
for(i=0;i<20 i="" span="">
cout<
}
cout<<"\nData yang ingin dicari : ";
cin>>c;
i=0;
posisi=0;
while(i<19 a="" amp="" c="" i="" span="">
i++;
}
if (A[i]!=c){
cout<<"Maaf data yang dicari tidak ada";
}else if(posisi=i+1)
cout<<"ditemukan pada posisi ke "<
getch();
}19>20>
Binary Search
Tujuan binary search adalah memperkecil pembandingan yang harus dilakukan antara data yang dicari dengan data
yang ada di dalam tabel, khususnya untuk jumlah data yang sangat besar
ukurannya. Prinsip dasarnya
adalah melakukan proses pembagian ruang pencarian secara berulang-ulang sampai
data ditemukan atau sampai ruang pencarian tidak dapat dibagi lagi (berarti ada
kemungkinan data tidak ditemukan). Syarat utama untuk
pencarian biner adalah data di dalam tabel harus sudah terurut, misalkan
terurut menaik.
Contoh Program Binary Search :
#include
using namespace std;
int main () {
int n, angka[12], kiri, kanan, tengah, temp, key;
bool ketemu = false;
cout<<"Masukan jumlah data : ";
cin>>n;
for(int i=0; i
{
cout<<"Angka ke - ["<
cin>>angka[i];
}
for (int i=0; i
{
for(int j=0; j< n-i-1; j++)
{
if(angka [j] > angka [j+1])
{
temp=angka[j];
angka[j]=angka[j+1];
angka[j+1]=temp;
}
}
}
cout<<"Data yang telah diurutkan adalah : ";
for(int i=0; i
{
}
cout<<"\n Masukan angka yang dicari : ";
cin>>key;
kiri=0;
kanan=n-1;
while(kiri<=kanan)
{
tengah=(kiri + kanan)/2;
if(key == angka[tengah])
{
ketemu=true;
break;
}
else if (key < angka [tengah])
{
kanan = tengah -1;
}
else
{
kiri = tengah +1;
}
}
if (ketemu == true)
cout<<"Angka ditemukan!";
else
cout<<"Angka tidak ditemukan";
return 0;
}
Sumber : academia.edu & Modul STIMIK Surabaya