Mengamati Aktivitas Belajar Siswa
Dalam buku ini akan dibahas algoritma pencarian data dalam array yang hanya akan membahas algoritma pencarian yang paling sederhana yaitu algoritma pencarian linier atau
pencarian beruntun atau sequential search.
Spesifikasi Masalah Pencarian
Pertama-tama kita menspesifikasikan masalah pencarian di dalam array. Dalam bab 6 ini kita mendefinisikan permasalahan pencarian secara umum sebagai berikut: diberikan array A yang
sudah terdefinisi elemen-elemennya, dan x adalah elemen yang bertipe sama dengan elemen array A. Carilah x di dalam array A
Hasil atau keluaran dari persoalan atau permasalahan pencarian dapat bermacam-macam, tergantung pada spesifikasi rinci dari persoalan atau permasalahan yang dihadapi tersebut,
misalnya: a. Pencarian yang hanya untuk memeriksa keberadaan x. Hasil atau keluaran yang diinginkan
misalnya hanya pesan bahwa x ditemukan atau tidak ditemukan di dalam array. Contoh:
Write ‘ditemukan’ atau Write ‘tidak ditemukan’
b. Hasil pencarian adalah indeks elemen array. Jika x ditemukan, maka indeks elemen array tempat x berada diisikan ke dalam idx. Jika x tidak terdapat di dalam array misal array A,
maka idx diisi dengan harga khusus, misal -1. Contoh: perhatikan array di bawah ini
A 22
32 4
3 10
36 99
56 91
4 1
2 3
4 5
6 7
8 9
10 Misalkan x= 99, maka idx = 7,dan bila x = 50, maka idx = -1.
c. Hasil pencarian adalah sebuah nilai boolean yang menyatakan status hasil pencarian. Jika x ditemukan, maka sebuah peubah bertipe boolean,
misalnya “ketemu”, diidi dengan nilai true, sebaliknya “ketemu” diisi dengan nilai false. Hasil pencarian ini selanjutnya disimpulkan pada
bagian pemanggil prosedur.
Contoh: Perhatikan array A di atas: Misalkan x = 99, maka ketemu = true, dan bila x = 50, maka ketemu = false.
Untuk kedua macam keluaran b dan c di atas, kita mengkonsultasi hasil pencarian setelah proses pencarian selesai dilakukan, tergantung pada kebutuhan. Misalnya menampilkan pesan x
ditemukan atau tidak ditemukan atau memanipulasi nilai x.
Algoritma Pencarian linier
Algoritma pencarian yang paling sederhana, yaitu metode pencarian linier pencarian lurus. Nama lain algoritma linier adalah algoritma pencarian beruntun sequential search. Pada
dasarnya, algoritma pencarian linier adalah proses membandingkan setiap elemen array satu persatu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan atau
seluruh elemen sudah diperiksa. Misalkan, pada sebuah kasus anda ingin menelepon teman, tapi kebetulan lupa dengan
nomor teleponnya. Maka anda pasti membuka buku telepon untuk mencari nomor telepon yang anda inginkan tersebut. Di sis lain, buku telepon anda tidak urut sama sekali, baik dari segi nama
yang sesuai urutan huruf abjad, maupun dari nomor telepon. Berarti anda harus mencari satu persatu, halaman demi halaman nomor telepon tersebut sampai akhirnya ditemukan nomor telepon
tersebut. Begitulah kira-kita algoritma pencarian linier. Algoritma pencarian yang paling sederhana adalah metode pencarian linier. Seperti yang
dibahas pada kegiatan sebelumnya, kita akan melakukan pencarian pada sebuah array yang sudah terdefinisi elemen-elemennya, dan x adalah elemen yang bertipe sama dengan elemen
array A carilah x di dalam array A. Misalakn array A di bawah ini dengan n = 7 elemen:
A 22
32 4
9 10
36 46
1 2
3 4
5 6
7 Misalkan nilai yang kita cari adalah x = 36.
Elemen yang dibandingkan berturut-turut adalah 22, 32, 4, 9, 10, 36 ditemukan Indek array yang dikembalikan adalah 6
Misalkan nilai yang kita cari adalah x = 22. Elemen yang dibandingkan berturut-turut adalah 22 ditemukan
Indek array yang dikembalikan adalah 1 Misalkan nilai yang kita cari adalah x = 100.
Elemen yang dibandingkan berturut-turut adalah 22, 32, 4, 9, 10, 36, 46 tidak ditemukan Indek array yang dikembalikan adalah -1
Pada algoritma pencarian linier pada array A, setiap elemen array A dibandingkan dengan x mulai dari elemen pertama hingga A[1]. Aksi pembandingan dilakukan selama indeks array i belum
melebihi n dan A[i] tidak sama dengan x. Aksi pemabndingan dihentikan bila A[i] = x atau i = n. Elemen terakhir, A[n], diperiksa secara khusus. Keluaran yang dihasilkan oleh prosedur pencarian
adalah sebuah boolean misal nana peubahnya ketemu yang bernilai true jika x ditemukan, atau bernilai false jika x tidak ditemukan.
Algoritma bisa ditulis sebagai berikut: i Prosedur pencarian beruntun:
Prosedure liniersearch1 input A : arrayint, input n :
integer, input x : integer, output ketemu : boolean
{mencari keberadaan nilai x di dalam array A[1..n].} {k.awal: x dan array [1..n] sudah terdefinisi nilainya.}
{k.akhir: ketemu nilai true jika x ditemukan. Jika x tidak ditemukan, ketemu bernilai false.}
Deklarasikan I: integer {pencatat indeks array}
Algoritma: i ← 1
while i n and A[i] ≠ x do i ← i + 1
endwhile {i = n or A[i] = x}
if A[i] = x then {x ditemukan}
Ketemu ← true else
ketemu ← false {x tidak ada di dalam array A} endif
ii penulisan freepascal algoritma pencarian linier deklarasi
const Nmaks = 100; {jumlah maksimum elemen array} type arrayint = array [1..Nmaks] of integer;
Prosedure liniersearch1 input L : arrayint; input n : integer; input x : integer; var idx : integer;
{mencari keberadaan nilai x di dalam array A[1..n].} {k.awal: x dan elemen
–elemen array [1..n] sudah terdefinisi nilainya.}
{k.akhir: idx berisi indeks A yang berisi nilai x. Jika x tidak ditemukan, maka idx diisi dengan nilai -1}
var i : integer {pencatat indeks array}
begin i := 1;
while i n and A[i] x do i := i + 1;
{endwhile} {i = n or A[i] = x}
if A[i] = x then {x ditemukan}
Ketemu ← true else
ketemu ← false {x tidak ada di dalam array A} {endif}
end;