Anda di halaman 1dari 25

SEARCHING (PENCARIAN)

MAKALAH
Untuk memenuhi tugas matakuliah
Pemrograman Komputer
yang dibina oleh Bapak Mohamad Yasin, S.Kom., M.Kom.

Oleh :
Indah Rahayu Ningtyas
170312612073

UNIVERSITAS NEGERI MALANG


JURUSAN MATEMATIKA
S1MATEMATIKA
Februari 2019
KATA PENGANTAR

Puji syukur kepada hadirat Tuhan Yang Maha Esa, karena dengan rahmat
dan karunia-Nya penulis dapat menyelesaikan makalah ini. Tujuan penulisan
makalah ini adalah untuk menambah pengetahuan dalam pembelajaran matakuliah
PemrogramanKomputer, khususnya pada materi searching.
Penulis mengharapkan tugas ini dapat memberikan pengalaman yang
berguna baik bagi pembaca, yang tentunya akan menambah ilmu dan wawasan
berfikir mahasiswa. Terima kasih pada pihak-pihak yang membantu penyusunan
makalah ini semoga makalah ini dapat berguna bagi mahasiswa khususnya,
maupun bagi masyarakat pada umumnya.
Penulis menyadari bahwa makalah ini masih jauh dari sempurna, oleh
karena itu kritik dan saran dari semua pihak yang bersifat membangun selalu kami
harapkan demi kesempurnaan penulisan selanjutnya.

Malang, 16 Februari 2019

Penulis

i
DAFTAR ISI
Halaman
KATA PENGANTAR..........................................................................................i
DAFTAR ISI.........................................................................................................ii

BAB I PENDAHULUAN
1.1 Rumusan Masalah..............................................................................1
1.2 Tujuan Penulisan................................................................................1

BAB II ISI
2.1 Definisi Searching..............................................................................2
2.2 Metode Searching...............................................................................3
2.2.1 Sequential Search......................................................................3
2.2.2 Binary Search............................................................................3
2.2.3 Interpolation Search..................................................................4
2.3 IlustrasiAlgoritma Searching.............................................................4
2.3.1 Sequential Search......................................................................4
2.3.2 Binary Search............................................................................5
2.3.3 Interpolation Search..................................................................8
2.4 Algoritma Searching..........................................................................10
2.4.1 Sequential Search......................................................................10
2.4.2 Binary Search............................................................................11
2.4.3 Interpolation Search..................................................................12
2.5 Program Searching.............................................................................13

BAB III PENUTUP


3.1 Kesimpulan .......................................................................................21
3.2 Saran ..................................................................................................21

DAFTAR RUJUKAN ......................................................................................... 22

ii
BAB I

PENDAHULUAN

1.1 Rumusan Masalah

Rumusan masalah pada makalah ini adalah sebagai berikut.

1. Apakah yang dimaksud dengan searching?

2. Sebutkan dan jelaskan tiga metode searching!

3. Buat ilustrasi dengan masing-masing algoritma searching tersebut!

4. Buatalgoritma (dengan menggunakan stringgrid) sebagai presentasi

penampilan data!

5. Buat program untuk mengimplementasikan metode searching tersebut!

1.2 Tujuan Penulisan

Berdasarkan rumusan masalah diatas, maka tujuan pada makalah ini

sebagai berikut.

1. Dapat memahami apa yang dimaksud dengan searching.

2. Dapat menyebutkan dan menjelaskan tiga metode searching.

3. Dapat membuat ilustrasi dengan masing-masing algoritma searching

tersebut.

4. Dapat membuat algoritma (dengan menggunakan stringgrid) sebagai

presentasi penampilan data.

5. Dapat membuat program untuk mengimplementasikan metode

searching tersebut.

1
BAB II

PEMBAHASAN

2.1 Definisi Searching

Searching (pencarian) merupakan proses yang fundamental dalam

pengolahan data. Proses pencarian diartikan sebagai sebuah cara atau

prosedur untuk nilai (data) tertentu di dalam sekumpulan data yang bertipe

data sama (baik bertipe dasar atau bertipe bentukan). Pencarian terbagi

menjadi dua, yaitu pencarian internal dan eksternal. Pencarian internal

adalah pencarian terhadap sekumpulan data yang disimpan di dalam memori

utama (primary memory). Sedangkan pencarian eksternal adalah pencarian

terhadap sekumpulan data yang disimpan di dalam memori sekunder

(secondary memory), seperti tape atau disk.

Sebuah algoritma pencarian dijelaskan secara luas adalah sebuah

algoritma yang menerima masukan berupa sebuah masalah dan

menghasilkan sebuah solusi untuk masalah tersebut, yang biasanya didapat

dari evaluasi beberapa kemungkinan solusi. Algoritma pencarian (searching

algorithm) adalah algoritma yang menerima sebuah kata kunci dan dengan

langkah-langkah tertentu akan mencari rekaman dengan kata kunci tersebut.

Setelah proses pencarian dilaksanakan, akan diperoleh salah satu dari dua

kemungkinan, yaitu data yang dicari ditemukan atau tidak ditemukan.

2
3

2.2 Metode Searching

Pencarian dapat dilakukan dengan berbagai metode, yaitu sequential

search, binary search, dan interpolation search. Berikut ini akan dijelaskan

lebih lanjut tentang tiga metode tersebut.

2.2.1 Sequential Search

Sequential search (pencarian beruntun) merupakan metode

pencarian paling sederhana. Pencarian beruntun adalah proses

pencarian dengan membandingkan setiap elemen larik satu per satu

secara beruntun, mulai dari elemen pertama sampai elemen yang

dicari ditemukan atau seluruh elemen sudah diperiksa. Metode ini

disebut juga metode pencarian lurus (linear search). Pencarian

beruntun terbagi dua, yaitu pencarian beruntun pada larik terurut dan

pencarian beruntun pada larik tidak terurut.

2.2.2 Binary Search

Binary search (pencarian bagi dua) adalah metode pencarian

yang diterapkan pada sekumpulan data yang sudah terurut (terurut

menaik atau terurut menurun). Data yang disimpan di dalam larik harus

sudah terurut. Metode ini merupakan metode paling efisien. Metode ini

sering digunakan untuk pencarian data yang jumlahnya banyak

dengan waktu yang relatif cepat. Salah satu keuntungan data terurut

adalah memudahkan pencarian, dalam hal ini pencarian bagi dua.


4

2.2.3 Interpolation Search

Proses pencarian interpolasi (interpolation search) hampir sama

dengan proses pencarian binary search, dimana pencarian juga

dilakukan pada kumpulan data yang sudah urut. Jika data belum urut,

maka data yang akan dipakai harus diurutkan terlebih dahulu, sebelum

dapat dilakukan pencarian dengan metode ini.

Contoh pencarian dengan metode ini misalnya pencarian nomer

telpon pada daftar phonebook. Misalnya nama data yang dicari

berawalan huruf R, maka pencariannya tidak akan dilakukan dari

awal, namun langsung membuka 2/3 atau 3/4 dari tebal buku.

Jadi, data yang dicari relatif terhadap jumlah data.

Pada metode pencarian ini, kita mencoba menebak letak data

yang kita cari, dengan perhitungan sebagai berikut.

 Jika data[posisi] > data yg dicari, high = pos – 1

 Jika data[posisi] < data yg dicari, low = pos + 1

2.3 IlustrasiAlgoritma Searching

2.3.1 Sequential Search

Data:

7 10 13 16 18 21 76 81
1 2 3 4 5 6 7 8

 Misalkan nilai yang dicari x = 18


5

 Elemen yang dibandingkan (berturut-turut): 7, 10, 13, 16, 18

(ditemukan)

 Indeks larik yang dikembalikan : idx= 5

 Misalkan nilai yang dicari : x = 20

 Elemen yang dibandingkan (berturut-turut) : 7, 10, 13, 16, 18,

21, 76, 81 (tidak ditemukan)

 Indeks larik yang dikembalikan : idx = -1

2.3.2 Binary Search

Data:

7 10 13 16 18 21 76 81
1 2 3 4 5 6 7 8

Catatan: data yang akan digunakan harus sudah terurut.

i. Misalkan data yang akan dicari x = 18

Langkah 1 :

i = 1 dan j = 8 Indeks elemen tengah k = (i+j)div2 = (1+8)div2 = 4

(elemen yang berwarna merah)

7 10 13 16 18 21 76 81
1 2 3 4 5 6 7 8
kiri kanan

Langkah 2 :

Pembanding A[4] = 18? (Tidak)

Maka harus diputuskan apakah pencarian akan dilakukan di bagian

kiri atau di bagian kanan dengan pemeriksaan sebagai berikut:


6

Pembanding A[4] <18? (Iya)

Maka lakukan pencarian pada larik bagian kanan dengan i = k +1 =

4 + 1 = 5 dan j = 8 (tetap)

18 21 76 81
i=5 6 7 8=j

Langkah 1’ :

i = 5 dan j = 8 dimana A[5]= 18 (data ditemukan).

18
5

ii. Misalkan data yang akan dicari x = 20

Langkah 1 :

i = 1 dan j = 8

Indeks elemen tengah k = (i+j)div2 = (1+8)div2 = 4 ( elemen yang

berwarna merah)

7 10 13 16 18 21 76 81
1 2 3 4 5 6 7 8
kiri kanan

Langkah 2 :

Pembanding A[4] = 20? (Tidak)

Maka harus diputuskan apakah pencarian akan dilakukan di bagian

kiri atau di bagian kanan dengan pemeriksaan sebagai berikut:

Pembanding A[4] <20? (Iya)

Maka lakukan pencarian pada larik bagian kanan dengan i = k +1 =

4 + 1 = 5 dan j = 8 (tetap)
7

18 21 76 81
i=5 6 7 8=j
Langkah 1’ :

i = 5 dan j = 8

Indeks elemen tengah k = (i+j) div 2 = (5+8) div 2 = 6 ( elemen

yang berwarna merah)

18 21 76 81
5 6 7 8
(kiri)’ (kanan)’

Langkah 2’ :

Pembanding A[6] = 20? (Tidak)

Maka harus diputuskan apakah pencarian akan dilakukan di bagian

kiri atau di bagian kanan dengan pemeriksaan sebagai berikut:

Pembanding A[6] <20? (Tidak)

Maka lakukan pencarian pada larik bagian kiri dengan j = k -1 = 6 -

1 = 5 dan i= 5 (tetap)

18
5

Langkah 1’’:

i = 5 dan j = 5

Indeks elemen tengah k = (i+j) div 2 = (5+5) div 2 = 5

Langkah 2’’ :

Pembanding A[5] = 20? (Tidak)


8

Maka harus diputuskan apakah pencarian akan dilakukan di bagian

kiri atau di bagian kanan dengan pemeriksaan sebagai berikut:

Pembanding A[5] <20? (Iya)

Maka lakukan pencarian pada larik bagian kiri dengan i = k+1 =

5+1 = 6 dan j= 5 (tetap) .

Langkah 1’’’:

i = 6 dan j = 5,dimana A[6] data tidak ditemukan.

2.3.3 Interpolation Search

Data:

7 10 13 16 18 21 76 81
1 2 3 4 5 6 7 8

Catatan: data yang akan digunakan harus sudah terurut.

i. Misalkan data yang akan dicari x = 18

Langkah 1 :

Low =1

High = 8, dimana A[1]<=18 dan A[8]>=18

Pos = ( (C-A[low]) div (A[high]-A[low]) ) * (high-low) + low

= ( (18 -A[1] ) div ( A[8]-A[1] ) ) * (8-1) ) + 1

= ( (18 -7) div (81-7) ) * (8-1) + 1

= 1

Langkah 2 :

Pembanding A[1] = 18? (Tidak)

Pembanding A[1] <18? (Iya)


9

Maka lakukan pencarian dengan low = pos+1 = 1+1 = 2 dan

high = 8 (tetap)

Langkah 1’ :

Low =2

High = 8, dimana A[2]<=18 dan A[8]>=18

Pos = ( (C-A[low]) div (A[high]-A[low]) ) * (high-low) + low

= ( (18 - A[2]) div (A[8] - A[2]) ) * (8-2) + 2

= ( (18 -10) div (81-10) ) * (8-2) + 2

= 2

Langkah 2’ :

Pembanding A[2] = 18? (Tidak)

Pembanding A[2] <18? (Iya)

Maka lakukan pencarian dengan low = pos + 1 = 2 + 1 = 3 dan

high = 8 (tetap)

Langkah 1’’ :

Low =3

High = 8, dimana A[3]<=18 dan A[8]>=18

Pos = ( (C-A[low]) div (A[high]-A[low]) ) * (high-low) + low

= ( (18 - A[3] ) div (A[8] - A[3]) ) * (8-3) + 3

= ( (18 -13) div (81-13) ) * (8-3) + 3

= 3

Langkah 2’’ :

Pembanding A[3] = 18? (Tidak)

Pembanding A[3] <18? (Iya)


10

Maka lakukan pencarian dengan low = pos + 1 = 3 + 1 = 4 dan

high = 8 (tetap)

Langkah 1’’’ :

Low =4

High = 8, dimana A[4]<=18 dan A[8]>=18

Pos = ( (C-A[low]) div (A[high]-A[low]) ) * (high-low) + low

= ( (18 - A[4] ) div (A[8] - A[4]) ) * (8-4) ) + 4

= ( (18 -16) div (81-16) ) * (8-4) + 4

= 4

Langkah 2’’’ :

Pembanding A[4] = 18? (Tidak)

Pembanding A[4] <18? (Iya)

Maka lakukan pencarian dengan low = pos + 1 = 4+ 1 = 5 dan

high = 8 (tetap)

Langkah 1’’’’ :

A[5]= 18 data ditemukan.

2.4 AlgoritmaSearching

2.4.1 Sequential Search

1. Mulai.

2. Masukkan banyak data (N).

3. Menampilkan banyak kolom pada tabel Data (DATA).

4. Masukkan nilai-nilai pada tabel Data (DATA).

5. Masukkan nilai data yang dicari (C).


11

6. Menampilkan hasil pencarian

 Membandingkan nilai data pada kolom data a[i] dengan nilai

data yang dicari (C), untuk i=1 sampai N,

 ketika (i<N) dan (a[i]< >C), lakukan

 Jika a[i]=C, maka MS.Lines.Add('Data ditemukan'),

 Selainnya, maka MS.Lines.Add('Data tidak ditemukan').

7. Selesai

2.4.2 Binary Search

1. Mulai.

2. Masukkan banyak data (N).

3. Menampilkan banyak kolom pada tabel Data (DATA).

4. Masukkan nilai-nilai pada tabel Data (DATA).

5. Masukkan nilai data yang dicari (C).

6. Mengurutkan nilai-nilai data,

 membandingkan data ke-i dengan data ke-j, dengan (j=i+1),

untuk i=1 sampai N,

 Jika (data ke-i)>(data ke-j), maka (data ke-i) dan (data ke-j)

ditukar.

7. Menampilkan nilai-nilai data yang sudah terurut pada tabel Data

Terurut (DA).

8. Membandingkan nilai data pada kolom data terurut a[i] dengan

nilai data yang dicari (C), untuk i=1 sampai N dan j=N,
12

 ketika (i<=j) dan (a[i]< >C), cari posisi nilai data tengah (k)

dengan rumus k = (i+j) div 2,

 Jika a[k]=C, maka i=k,

 Jika a[k]>C, maka j=k-1,

 Selainnya, maka i=k+1.

9. Menampilkan hasil pencarian

 Jika a[i]=C, maka MS.Lines.Add('Data ditemukan'),

 Selainnya, maka MS.Lines.Add('Data tidak ditemukan').

10. Selesai

2.4.3 Interpolation Search

1. Mulai.

2. Masukkan banyak data (N).

3. Menampilkan banyak kolom pada tabel Data (DATA).

4. Masukkan nilai-nilai pada tabel Data (DATA).

5. Masukkan nilai data yang dicari (C).

6. Mengurutkan nilai-nilai data,

 membandingkan data ke-i dengan data ke-j, dengan (j=i+1),

untuk i=1 sampai N,

 Jika (data ke-i)>(data ke-j), maka (data ke-i) dan (data ke-j)

ditukar.

7. Menampilkan nilai-nilai data yang sudah terurut pada tabel Data

Terurut (DA).
13

8. Membandingkan nilai data pada kolom data terurut a[i] dengan

nilai data yang dicari (C), untuk i=1 sampai N, dengan nilai data

terendah (low) = 1 dan nilai data tertinggi (high) = N,

 ketika (a[low]<=C) dan (a[high]>=C) dan (a[i]< >C), cari

posisi nilai data tengah (pos) dengan rumus:

pos = ( (C-a[low]) div (a[high]-a[low]) ) * (high-low) + low,

 Jika a[pos] = C, maka I = pos,

 Jika a[pos] < C, maka low = pos+1,

 Selainnya, maka high = pos-1.

9. Menampilkan hasil pencarian

 Jika a[i]=C, maka MS.Lines.Add('Data ditemukan'),

 Selainnya, maka MS.Lines.Add('Data tidak ditemukan').

10. Selesai

2.5 Program Searching

1. Tampilan awal
14

2. Memasukkan banyak data

3. Memasukkan nilai data


15

4. Memasukkan nilai data yang akan dicari

5. Hasil pencarian
16

6. Program Delphi

unit USEARCH;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
Dialogs, StdCtrls, Grids;

type
TForm1 = class(TForm)
Label1: TLabel;
TD: TEdit;
Label2: TLabel;
DATA: TStringGrid;
Label3: TLabel;
DA: TStringGrid;
Button3: TButton;
Button4: TButton;
Button5: TButton;
MS: TMemo;
MB: TMemo;
MI: TMemo;
Button2: TButton;
Button6: TButton;
Button7: TButton;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
TCARI: TEdit;
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
N,C,R: Integer;
17

a: Array[1..1000] of integer;
implementation

{$R *.dfm}

procedure TForm1.Button3Click(Sender: TObject);


var
i:Integer;
begin
N:=strtoint(TD.Text);
Data.RowCount:=N+1;
Data.Cells[0,0]:='No.';
Data.Cells[1,0]:='Data';
for i:=1 to N do
Data.Cells[0,i]:=inttostr(i)+'.';
Data.ColWidths[0]:=25;
end;

procedure TForm1.Button4Click(Sender: TObject);


begin
TD.Clear;
Data.Cols[1].Clear;
Da.Cols[1].Clear;
MS.Clear;
MB.Clear;
MI.Clear;
TCARI.Clear;
end;

procedure TForm1.Button5Click(Sender: TObject);


begin
Close;
end;

procedure TForm1.Button6Click(Sender: TObject);


var
i,j,Result,k:Integer;
begin
N:=strtoint(TD.Text);
DA.RowCount:=N+1;
DA.Cells[0,0]:='No.';
DA.Cells[1,0]:='Data';
for i:=1 to N do
DA.Cells[0,i]:=inttostr(i)+'.';
DA.ColWidths[0]:=25;
for i:=1 to N do
DA.Cells[1,i]:=Data.Cells[1,i];
for i:=1 to N-1 do
18

for j:=i+1 to N do
begin
if strtoint(DA.Cells[1,i])>strtoint(DA.Cells[1,j]) then
begin
Result:=strtoint(DA.Cells[1,i]);
DA.Cells[1,i]:=DA.Cells[1,j];
DA.Cells[1,j]:=inttostr(Result);
end;
end;
C:=strtoint(TCARI.Text);
for i:=1 to n do
a[i]:=strtoint(DA.Cells[1,i]);
i:=1;
j:=N;
while (i<=j) and (a[i]<>C) do
begin
k:=(i+j) div 2;
if a[k]=C then i:=k
else if a[k]>C then j:=k-1
else i:=k+1;
end;
if a[i]=C then
begin
MB.Lines.Add('Data ditemukan');
MB.Lines.Add(TCARI.Text + ' ' + 'ditemukan pada data
terurut no' + ' ' + inttostr(i));
end
else
begin
MB.Lines.Add('Data tidak ditemukan');
MB.Lines.Add(TCARI.Text + ' ' + 'tidak ada di data
terurut');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);


var
i: integer;
begin
C:=strtoint(TCARI.Text);
for i:=1 to n do
a[i]:=strtoint(Data.Cells[1,i]);
i:=1;
while(i<N) and (a[i]<>C) do
i:=i+1;
if a[i]=C then
begin
MS.Lines.Add('Data ditemukan');
19

MS.Lines.Add(TCARI.Text + ' ' + 'ditemukan pada data


no' + ' ' + inttostr(i));
end
else
begin
MS.Lines.Add('Data tidak ditemukan');
MS.Lines.Add(TCARI.Text + ' ' + 'tidak ada di data');
end;
end;

procedure TForm1.Button7Click(Sender: TObject);


var
i,j,Result,low,high,pos:Integer;
begin
N:=strtoint(TD.Text);
DA.RowCount:=N+1;
DA.Cells[0,0]:='No.';
DA.Cells[1,0]:='Data';
for i:=1 to N do
DA.Cells[0,i]:=inttostr(i)+'.';
DA.ColWidths[0]:=25;
for i:=1 to N do
DA.Cells[1,i]:=Data.Cells[1,i];
for i:=1 to N-1 do
for j:=i+1 to N do
begin
if strtoint(DA.Cells[1,i])>strtoint(DA.Cells[1,j]) then
begin
Result:=strtoint(DA.Cells[1,i]);
DA.Cells[1,i]:=DA.Cells[1,j];
DA.Cells[1,j]:=inttostr(Result);
end;
end;
C:=strtoint(TCARI.Text);
for i:=1 to n do
a[i]:=strtoint(DA.Cells[1,i]);
low:=1;
high:=N;
while (a[low]<=C) and (a[high]>=C) and (a[i]<>C) do
begin
pos:=((C-a[low]) div (a[high]-a[low]))*(high-low)+low;
if a[pos]=C then i:=pos
else if a[pos]<C then low:=pos+1
else high:=pos-1
end;
if a[i]=C then
begin
MI.Lines.Add('Data ditemukan');
20

MI.Lines.Add(TCARI.Text + ' ' + 'ditemukan pada data


terurut no' + ' ' + inttostr(pos));
end
else
begin
MI.Lines.Add('Data tidak ditemukan');
MI.Lines.Add(TCARI.Text + ' ' + 'tidak ada di data
terurut');
end;
end;

end.
BAB III

PENUTUP

1.1 Kesimpulan

Proses pencarian diartikan sebagai sebuah cara atau prosedur untuk

nilai (data) tertentu di dalam sekumpulan data yang bertipe data sama (baik

bertipe dasar atau bertipebentukan). Pencarian terbagi menjadi dua, yaitu

pencarian internal dan eksternal. Pencarian dapat dilakukan dengan berbagai

metode, yaitu sequential search (pencarian beruntun), binary search

(pencarian bagi dua),dan interpolation search(pencarian beruntun).

1.1 Saran

Pembelajaran pemrograman computer diharapkan mampu dipahami

dengan baik oleh semua pembaca. Terlebih lagi untuk ketercapaian

pemahaman materi searching yang merupakan salahsatu pembahasan dari

matakuliah ini. Jika materi tersebut sudah dipahami dengan baik, maka

untuk materi selanjutnya dapat dipahami dengan baik juga oleh pembaca.

21
DAFTAR RUJUKAN

Agusta, A. (2015). Algoritma Pencarian (Searching). (online),


(https://andiagusta.blogspot.com/2014/02/algoritma-pencarian-
searching.html, diakses tanggal 11 Februari 2019).
Desvita, D. S. (2016). Interpolation Search. (online),
(http://devidesvitasari.blogspot.com/2016/04/interpolation-search.html,
diakses tanggal 16 Februari 2019).
Martino, B. (2016). Pencarian Interpolasi (interpolation searching). (online),
(https://billymartino11.wordpress.com/2016/04/06/pencarian-interpolasi-
interpolation-searching/, diakses tanggal 17 Februari 2019).

22

Anda mungkin juga menyukai