Anda di halaman 1dari 9

MAKALAH PEMROGRAMAN LANJUT

SEARCHING

DISUSUN OLEH KELOMPOK 6

1. Alin Meisya Putri 1607115929


2. Chi-Chi Salsa Amaza 1607123295
3. Nur Wahyuni 1607110554
4. Sri Purnama Ningsih 1607122609
5. Taufiq Perly Ardojati 1607114697

PRODI TEKNIK INFORMATIKA S1


JURUSAN TEKNIK ELEKTRO
FAKULTAS TEKNIK
UNIVERSITAS RIAU
2017
BAB I
Pendahuluan

1.1 Latar Belakang


Pada pembuatan makalah kali ini kami akan membahas tentang
Pencarian (Searching), dengan metode Sequential Searching.
Sequential Search (pencarian beruntun) menggunakan prinsip sebagai
berikut, data yang ada di bandingkan satu persatu secara berurutan
dengan yang dicari sampai data tersebut ditemukan atau tidak di
temukan.
Pencarian (searching) merupakan proses yang sering digunakan dalam
pengelolaan data. Proses pencarian adalah menemukan nilai (data)
tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe
dasar atau bertipe bentukan). Data dapat disimpan secara temporer
dalam memori utama atau disimpan secara permanen di dalam
memori sekunder (tape atau disk). Didalam memori utama , struktur
penyimpanan data yang umum adalah brupa larik atau tabel (array),
sedangkan di dalam memori sekunder berupa arsip (file). Algoritma
pencarian yang akan dibicarakan dimulai dengan algoritma pencarian
yang paling sederhana yaitu pencarian beruntun atau Sequential
Search.

1.2 Rumusan Masalah


1. Pengertian searching
2. Menjelaskan apa itu binary search?
3. Menjelaskan apa itu interpolation search?
4. Kentungan dan Kekurangan binary search.

1.3 Tujuan dan Manfaat


1. Mengkaji metode binary search dan interpolation search
sebagai program dalam menyelesaikan pencarian berurutan
2. Penggunaan metode binary search dan interpolation search
dalam program untuk menyelesaikan masalah yang ada
BAB II
Pembahasan

2.1 Pembahasan

2.1.1 Searching
Pencarian (searching) merupakan proses yang fundamental didalam
pengolahan data. Pencarian adalah proses menemukan nilai (data) tertentu
di dalam sekumpulan data yang tersruktur . sebagai contoh , untuk
mengubah (update) data tertentu di dalam sebuah larik, maka aktivitas
awal yang harus dilakukan adalah mencari keberadaan data tersebut di
dalam larik. Jika data yang dicari ditemukan,maka data tersebut bisa
diubah nilainya dengan nilai yang baru. Aktifitas awal yang sama juga
dilakukan pada proses penambahan (insert) data baru kedalam larik ( tidak
boleh ada duplikasi). Proses penambahan data dimulai dengan mencari
apakah data baru sudah terdapat didalam larik.jika sudah ada , maka data
tersebut tidak perlu dimaskun, tetapi jika belum ada, maka masuka data
baru tersebut kedalam larik.
Alogoritma pencarian yang akan dibicarakan dimulai dengan
alogoritma pencarian yang paling sederhana (yaitu pencarian beruntun atau
sequential search)hingga alogoritma yang lebih maju yaitu pencarian bagi
dua (binary search).

2.1.2 Binary Search


Binary search adalah metode pencarian suatu data atau elemen di
dalam suatu array dengan kondisi data dalam keadaan terurut. Proses
pencarian binary search hanya dapat dilakukan pada sekumpulan data yang
sudah diurutkan terlebih dahulu. Prinsip dari binary search terhadap N
elemen dapat dijelaskan seperti berikut:
1. Tentukan posisi awal = 0 dan posisi akhir = N-1.
2. Hitung posisi tengah = (posisi awal + posisi akhir)/2.
3. Bandingkan data yang dicari dengan elemen posisi tengah.

Jika sama maka catat posisi dan cetak kemudian berhenti.

Jika lebih besar maka akan dilakukan pencarian kembali kebagian


kanan dengan posisi awal = posisi tengah +1 dan posisi akhir tetap
kemudian ulangi mulai poin 2.
Jika lebih kecil maka akan di lakukan pencarian kembali ke bagian
kiri dengan nilai posisi awal tetap dan nilai posisi akhir = posisi tengah-1
kemudian ulangi mulai poin 2

Pencarian bagi dua (binary search) adalah teknik yang diterapkan


hanya pada elemen larik yang telah terurut (sorted). Pencarian beruntun
memiliki satu kekurangan, yaitu dalam kasus terburuk ( elemen yang
dicari berada pada pisisi terakhir) maka pencarian harus dilakukan
sepanjang larik. Semaki banyak elemen semakin lama pencarian harus
dilakukan.

Proses pencarian bagi dua dilakukan sebagai berikut :

1. Andaikan jumlah elemen adalah m, maka tetapkan indeks= m/2, Sehingga


larik dibagi dua, yaitu bagian kiri dengan indeks dari 1 sampai m/2, dan
bagian kanan dengan indeks m/2 hingga m.
2. Periksa dulu apakah x = A[indeks].Bila ya,berarti elemen ditemukan bila
tidak, teruskan kelangkah berikutnya.
3. Periksa apakah x>A [indeks]. Bila ya, cari disisi kanan. Bila tidak, cari
disisi kiri.
4. Teruskan pencarian pada sisi yang tepat dengan mengambil indeks tengah
dari sisi tersebut samapai elemen ditemukan atau tidak sama sekali.

2.1.3 Kekurangan dari Binary Search


1. Membaca Array data.
2. Apabila Array belum terurut maka Array diurutkan terlebih dahulu.
3. Menentukan data yang akan dicari.
4. Menentukan elemen tengah dari Array .
5. Jika nilai elemen tengah sama dengan data yang dicari, maka pencarian
berhenti.
6. Jika elemen tengah tidak sama dengan data yang dicari, maka:
a. Jika nilai elemen tengah > data yyang dicari maka pencarian dilakukan
pada setengah Array pertama.
b. Jika nilai elemen tengah lebih kecil dari pada data yang dicari maka
pencarian dilakukan pada setengah Array berikutnya.

2.1.4 Kelebihan dari Binary Search


Proses dalam pencarian data lebih cepat dari sequential search

2.1.5 Interpolation Search


Proses pencarian data ini hampir sama dengan proses pencarian binary
search, pencarian ini juga dilakukan pada kumpulan data yang sudah urut.
Akan tetapi jika pada binary search kita membagi data menjadi 2 bagian
tiap prosesnya, pada interpolation search kita akan membagi data menurut
rumus sebagai berikut:

Posisi = ( kunci – data[low] / data[high] – data[low] ) * ( high – low ) +


low

Contoh program binary search

1. Mencari Angka
#include<stdio.h>
int caribin(int data[],int n, int k)
{
int ada, atas, bawah, tengah, posisi;
ada=0;
bawah=0;
atas=n-1;
while(atas>=bawah)
{
tengah=(atas+bawah)/2;
if(k>data[tengah])
bawah=tengah+1;
else if(k<data[tengah])
atas=tengah-1;
else
{
ada=1;
posisi=tengah;
bawah=atas+1;
}
}
if(!ada)
posisi=-1;

return posisi;
}
main()
{
int data[]={1,3,6,7,9,10,11,12,15,17,20};
int dicari=12;
printf("posisi %d dalam larik data: %d\n",dicari,
caribin(data,11,dicari));
}
2. Mencari Posisi Karakter
#include<stdio.h>
#include<string.h>
int poskar(char st[], char k)
{
int i, posisi, panjang;
i=0;
posisi=-1;
panjang=strlen(st);
while((i<panjang-1) && posisi==-1)
{
if(st[i]==k)
posisi=i;
i++;
}
return posisi;
}
main()
{
char kalimat[]="Hello World!";
char dicari='W';
printf("Posisi %c dalam string %s: %d\n", dicari,
kalimat, poskar(kalimat,dicari));
}
Contoh Program Interpolation Search

1. Mencari Angka
#include <stdio.h>
#include <stdlib.h>
#define MAX 5
int interpolationsearch(int a[],int low,int
high,int x){
int mid;
while(low<=high){
mid=low+(high-low)*((x-a[low])/(a[high]-
a[low]));
if(x==a[mid])
return mid+1;
if(x<a[mid])
high=mid-1;
else
low=mid+1;
}
return -1;
}

int main(){
int arr[MAX];
int i,n;
int val,pos;

printf("\nMasukkan total elemen (n <= %d) :


",MAX);
scanf("%d",&n);
printf("Masukkan %d Elemen : ",n);
for(i=0;i<n;i++)
scanf("%d",&arr[i]);

printf("\nLIST : ");

for(i=0;i<n;i++)
printf("%d\t",arr[i]);

printf("\nSearch For : ");


scanf("%d",&val);
pos=interpolationsearch(&arr[0],0,n,val);
if(pos==-1)
printf("\nElemen %d tidak
ditemulan\n",val);
else
printf("\nElemen %d ditemukan pada posisi
%d\n",val,pos);

return 0;

}
DAFTAR PUSTAKA

Dr. Suarga,M.Sc.,M.Math.,Ph.D.2012.ALGORITMA dan PEMROGRAMAN.

yogyakarta:C.V ANDI OFFSET.

Kadir, Abdul.2012.Algoritma & Pemrograman menggunakan C dan

C++.Yogyakarta:C.V ANDI OFFSET.

https://kazwini13.wordpress.com/2010/12/22/searching-interpolation-search/