0% menganggap dokumen ini bermanfaat (0 suara)
45 tayangan

Modul 7

Dokumen ini membahas tentang teknik-teknik pencarian data dalam pemrograman, yaitu sequential search, binary search, dan interpolation search. Sequential search melakukan pencocokan secara berurutan dari awal hingga akhir array. Binary search hanya bekerja pada data terurut dengan menebak posisi tengah. Interpolation search memperkirakan posisi berdasarkan nilai antara dua elemen terdekat. Dokumen ini juga berisi contoh kode untuk merealisasikan ketiga teknik
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
45 tayangan

Modul 7

Dokumen ini membahas tentang teknik-teknik pencarian data dalam pemrograman, yaitu sequential search, binary search, dan interpolation search. Sequential search melakukan pencocokan secara berurutan dari awal hingga akhir array. Binary search hanya bekerja pada data terurut dengan menebak posisi tengah. Interpolation search memperkirakan posisi berdasarkan nilai antara dua elemen terdekat. Dokumen ini juga berisi contoh kode untuk merealisasikan ketiga teknik
Hak Cipta
© © All Rights Reserved
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

PERTEMUAN 7

Teknik Search
7.1. TUJUAN :
 Mahasiswa mampu menerapkan teknik search kedalam program
7.2. MATERI :
A. Konsep dasar search
B. Penerapan teknik search kedalam program
7.3. LANDASAN TEORI
7.3.1. Pengertian Searching
Searching adalah mencari data yang dibutuhkan. Searching dalam pemrograman bisa
dilakukan untuk mencari data yang ada di dalam memory komputer Dalam kehidupan sehari-hari
kita juga sering melakukan kegiatan searching seperti mencari data/informasi yang ada dalam
internet. Ada beberapa metode yang dapat digunakan untuk searching, ada yang dinamakan;
a. Sequential Search
b. Binary search
7.3.2. 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.
Proses pencarian dengan metode sequential :
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.
Jika data yang dicari ditemukan maka kita dapat membuat statement bahwa data telah
ditemukan. Jika data yang dicari tidak ditemukan maka kita dapat membuat statement bahwa
data tidak ditemukan.
Ilustrasi :

Data yang dicari yaitu 7 disimpan di variabel x, kemudian akan dibandingkan satu per satu
secara sekuensial terhadap data yang ada dalam array. Jika ditemukan data di dalam array yang
sama dengan data yang dicari artinya data ditemukan.
Teknik pencarian sekuensial memiliki kelebihan mudah dalam diimplementasikan dalam
program sedangkan kekurangannya adalah jika terdapat banyak data dalam suatu array, maka
akan perlukan waktu yang lebih lama untuk membandingkan data yang dicari dengan jumlah data
yang sangat banyak dalam suatu array.

7.3.3. Binary Search


Metode pencarian Binary yaitu mencari data dengan melakukan pengelompokan array
menjadi bagian-bagian. Binary Search hanya dapat diimplementasikan pada data yang telah
terurut baik ascending maupun descending dalam suatu array. Pencarian dilakukan dengan
langsung menebak apakah data yang dicari berada ditengah-tengah data yang lainnya,
kemudiaan membandingkan data yang ditengah dengan data yang dicari, apabila sama maka
dapat dikatakan data ditemukan, namun apabila data yang dicari ternyata lebih kecil daripada
elemen tengah, maka pencarian dilakukan dari bagian tengah ke bawah.
Proses Binary Search yang urutan datanya ascending :
1. Pertama buat perulangan lalu menentukan posisi low yaitu posisi yang menandakan index
paling rendah kemudian menentukan posisi high. Kemudian mencari posisi mid= (high +
low)/2
2. Lalu membandingkan data yang dicari dengan nilai yang ada diposisi mid.
3. Jika data yang dicari sama dengan nilai yang ada diposisi mid berarti data ditemukan
4. Jika data yang dicari lebih kecil dari nilai yang ada di posisi mid maka pencarian data akan
dilakukan dibagian kiri mid dengan melakukan pembandingan, dengan kondisi posisi high
berubah yaitu (mid - 1) dan posisi low tetap
5. Jika data yang dicari lebih besar dari nilai yang ada mid maka pencarian data akan
dilakukan di bagian kanan dari mid dengan posisi low yang yang berubah yaitu (mid+1)
dan posisi high tetap.
Ilustrasi :

setelah menentukan low dan high kemudian menentukan mid. Perhitungan mid=(low+high)/2 jadi
mid = (0+4)/2, artinya mid berada di data[2]. Kemudian data yang dicari yang ditampung
divariabel x dibandingkan dengan data/nilai yang berada di mid. Data yang dicari ialaha 7<10
kemudian pencarian data dilakukan di bagian kiri mid.
pencarian dibagian kiri mid masih dalam perulangan yang sama, namun indeksnya yang
dipersempit. Karena data yang dicari lebih kecil dari data mid yang sebelumnya maka posisi high
yang berubah yaitu (mid - 1) yang sebelumnya dan low tetap pada posisi yang sama. Kemudian
menentukan mid=(0+1)/2=0 artinya mid sekarang terletak didata[0]. Lalu data yang dicari
dibandingkan dengan mid. 7=7 artinya data telah ditemukan.

7.3.4 Teknik Pencarian Interpolasi


Interpolation Search adalah sebuah algoritma atau metode untuk mencari nilai key yang
diberikan dalam array diindeks yang telah diperintahkan oleh nilai – nilai kunci. Metode ini didasari
pada proses pencarian nomor telepon pada buku telepon yang mana manusia mencari melalui
dengan nilai kunci yang terdapat pada buku. Teknik searching ini dilakukan dengan perkiraan
letak data.
Rumus untuk pencarian
Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) + low
 Jika data[posisi] > data yg dicari, high = pos – 1
 Jika data[posisi] < data yg dicari, high = pos + 1

7.4. PRAKTIKUM
a. Praktikum 1
#include <iostream>
using namespace std;
int main(void){
char data[12] = {'s','t','r','u','k','t','u','r','d','a','t','a'};
char pencarian;
bool got = false;
int i,get,jum = 12;
cout<<"PENCARIAN SEQUENTIAL\n";
cout<<"\n";
cout<<"\nData : \t";
for(i=0;i<jum;i++){
cout<<"\'"<<data[i]<<"\' ";
}
cout<<endl;
cout<<"\nData yang anda ingin cari : ";
cin>>pencarian; //input data yang dicari
for(i=0;i<jum;i++){
if(pencarian == data[i]){
got = true;
get = i;
}
}
if(!got){
cout<<"data tidak ada";
}else{
cout<<"data \""<<pencarian<<"\" berada di index ke - ";
for(i=0;i<jum;i++){
if(pencarian == data[i]){
cout<<i<<" ";
}
}
}
return 0;
}

b. Praktikum 2
#include <iostream>
using namespace std;
int main(void){
char pencarian,temp,data[12] =
{'s','t','r','u','k','t','u','r','d','a','t','a'};
int i,j,low,higt,mid,jum = 12;
bool got = false;
cout<<"PENCARIAN BINARI\n";
cout<<"====================\n";
cout<<"\nData : \t";
for(i=0;i<jum;i++){
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
cout<<"\nMasukan Data yang dicari : ";
cin>>pencarian;
for(i=0;i<jum;i++){
for(j=0;j<jum-i-1;j++){
if(data[j] > data [j+1]){
temp = data[j];
data[j]=data[j+1];
data[j+1]=temp;
}
}
}
cout<<endl;
cout<<"Data Di Sorting : ";
for(i=0;i<jum;i++){
cout<<"'"<<data[i]<<"' ";
}
cout<<endl;
low = 0;
higt = (jum - 1);
while(low<=higt){
mid = (low + higt)/2;
if(pencarian == data[mid]){
got = true;
break;
}else if(pencarian < data[mid]){
higt = mid - 1;
}else{
low = mid + 1;
}
}
cout<<endl;

if(!got){
cout<<"Data tidak ditemukan";
}else{
cout<<"Data '"<< pencarian <<"' ditemukan index ke : "<<mid ;
}
return 0;
}

c. Praktikum 3
#include<bits/stdc++.h>
using namespace std;

int interpolationSearch(int arr[], int n, int x)


{
int lo = 0, hi = (n - 1);
while (lo <= hi && x >= arr[lo] && x <= arr[hi])
{
if (lo == hi)
{
if (arr[lo] == x) return lo;
return -1;
}
int pos = lo + (((double)(hi - lo) /
(arr[hi] - arr[lo])) * (x - arr[lo]));

if (arr[pos] == x)
return pos;

if (arr[pos] < x)
lo = pos + 1;

else
hi = pos - 1;
}
return -1;
}

int main()
{
int arr[] = {10, 12, 13, 16, 18, 19, 20, 21,
22, 23, 24, 33, 35, 42, 47};
int n = sizeof(arr)/sizeof(arr[0]);
int x = 18;
int index = interpolationSearch(arr, n, x);
if (index != -1)
cout << "Element found at index " << index;
else
cout << "Element not found.";
return 0;
}

7.5. LATIHAN
1. Buatlah sebuah program dengan mengkombinasikan teknik pencarian sequential dan
teknik pencarian binary
2. Buatlah sebuah program menggunakan metode pencarian interpolasi dengan
menginputkan data secara langsung pada console.
3. Input 10 nama barang kemudian cari nama barang urutan ke- 8

Anda mungkin juga menyukai