Searching
merupakan proses dasar dalam pengolahan data. Yaitu untuk menemukan nilai
tertentu dalam sekumpulan data yang bertipe sama. Algoritma searching
dijelaskan secara luas sebagai algoritma yang menerima masukan berupa sebuah
masalah dan menghasilkan sebuah solusi untuk masalah tersebut.
Beberapa algoritma sorting/pencarian yang akan dipelajari yaitu :
- Sequential Search
- Binary Search
1. Pencarian Beruntun (Sequential
Searching)
Sequential
Search merupakan salah satu teknik pencarian data..
Dalam C++ dan Pemrograman lainnya sequential search adalah algoritma
pencarian data yang paling umum dipelajari. Selain sequential search
masih ada teknik pencarian data lainnya seperti Binary Search.
Teknik
sequential search sangat sederhana dimana data dicari secara berurut (sequential)
dari awal sampai akhir. Contoh nyatanya misalkan anda ingin mencari siswa
dengan nama Herry di buku absen kelas, tentu anda akan mengurutnya dari
awal sampai akhir kan dalam mencarinya.
Kelebihan
dari teknik pencarian ini adalah jika data yang dicari terletak didepan, maka
data akan ditemukan dengan cepat.
Kekurangannya
adalah jika data yang dicari terletak dibelakang atau paling akhir, maka akan
membutuhkan waktu yang lama dalam proses pencariannya. Dan apabila jumlah datanya
banyak, tentu juga akan membutuh waktu yang lama dan beban yang besar pula.
Algoritma
pencarian berurutan dapat dituliskan sebagai berikut :
1 i
← 0
2
ditemukan ← false
3
Selama (tidak ditemukan) dan (i <= N) kerjakan baris 4
4
Jika (Data[i] = x) maka ditemukan ← true, jika tidak i ← i + 1
5
Jika (ditemukan) maka i adalah indeks dari data yang dicari, jika tidak data
tidak ditemukan
Contoh program sequential
search pada C++
Contoh
#include <stdio.h>
#include <conio.h>
void main()
{
int data[8] = {8,10,6,-2,11,7,1,100};
int cari;
int flag=0;
printf(“masukkan data yang ingin dicari = “);scanf(“%d”,&cari);
for(int i=0;i<8;i++)
{
if(data[i] == cari) flag=1;
}
if(flag==1) printf(“Data ada!\n”);
else printf(“Data tidak ada!\n”);
getch();
return 1;
}
#include <stdio.h>
#include <conio.h>
void main()
{
int data[8] = {8,10,6,-2,11,7,1,100};
int cari;
int flag=0;
printf(“masukkan data yang ingin dicari = “);scanf(“%d”,&cari);
for(int i=0;i<8;i++)
{
if(data[i] == cari) flag=1;
}
if(flag==1) printf(“Data ada!\n”);
else printf(“Data tidak ada!\n”);
getch();
return 1;
}
Dari program
di atas, terlihat bahwa dilakukan perulangan untuk mengakses semua elemen array
data satu per satu berdasarkan indeksnya.
- Program menggunakan sebuah variable flag yang berguna untuk menandai ada atau tidaknya data yang dicari dalam array data. Hanya bernilai 1 atau 0.
- Flag pertama kali diinisialisasi dengan nilai 0.
- Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0.
- Program menggunakan sebuah variable flag yang berguna untuk menandai ada atau tidaknya data yang dicari dalam array data. Hanya bernilai 1 atau 0.
- Flag pertama kali diinisialisasi dengan nilai 0.
- Jika ditemukan, maka flag akan diset menjadi 1, jika tidak ada maka flag akan tetap bernilai 0.
-Semua
elemen array data akan dibandingkan satu per satu dengan data yang dicari dan
diinputkan oleh user.
2. Binary Search
1. Teknik pencarian data dengan cara membagi data menjadi
dua bagian.
2. Data harus diurutkan terlebih dahulu.
3. Tahapan pencariannya
sebagai berikut :
-Data diambil dari posisi awal (kiri) sampai posisi akhir (kanan)
-Kemudian cari posisi tengah dengan rumus :
-Data tengah tersebut kemudian dibandingkan dengan data yang
dicari, sbb :
a. Jika tengah = data yang dicari, maka data ketemu.
b. Jika data yang dicari > tengah, maka dilakukan pergeseran variabel
awal, yaitu awal (kiri) = tengah +1
c.Jika data yang dicari < tengah , maka dilakukan pergeseran variabel
akhir, yaitu akhir (kanan) =
tengah ‐1
4.Ilustrasi pencarian data 17, pada array dibawah ini :
cuma source codenya ya guys... selamat mencoba.