Anda di halaman 1dari 8

STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.

id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

MODUL PRAKTIKUM STRUKTUR DATA III


SEARCHING / PENCARIAN

3.1 Tujuan Instruksional


 Mahasiswa lebih memahami pencarian data
 Mahasiswa dapat melakukan teknik pencarian dalam menyelesaikan
persoalan praktis dalam pemrograman

3.2 Indikator
 Mahasiswa mampu menganalisa persoalan dan membuat program
pencarian dengan benar.
 Mahasiswa mampu mengaplikasikan metode pencarian dalam
pembuatan program praktis

3.3 Petunjuk Pelaksanaan Praktikum


 Pahami tujuan dan dasar teori dengan baik dan benar
 Kerjakan latihan dan tugas praktikum dengan baik, benar, mandiri,
serta jujur
 Tanyakan kepada asisten praktikum / dosen berkaitan dengan hal-hal
yang kurang jelas / mengalami kesulitan saat melaksanakan kegiatan
praktikum

3.4 Searching / Pencarian


Setelah sebelumnya membahas teknik mengenai pengurutan / sorting,
maka pada materi kali ini akan membahas mengenai teknik pencarian /
searching elemen tertentu pada suatu array yang telah terurut. Teknik
pencarian pada array yang telah terurut memungkinkan dalam pencarian
elemen tertentu dengan cara yang lebih efektif dan efisien (lebih cepat)
dibandingkan dengan melakukan pencarian elemen dalam array yang belum
terurut. Pencarian data merupakan pekerjaan pemrograman komputer yang
paling mendasar dan merupakan salah satu hal yang paling banyak dipelajari.
Beberapa metode pencarian antara lain Linear Search, Binary Search,
Recursive Binary Search, Jump Search, Interpolation Search, Exponential Search,
dan sebagainya.

1
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

3.5 Sequential / Linear Searching


Salah satu metode pencarian yang paling umum digunakan dengan
melakukan pencarian mulai dari awal himpunan rekaman dan bergerak melalui
masing-masing rekaman hingga program pencarian menemukan rekaman yang
dicari atau hingga mencapai ujung rekaman. Metode pencarian seperti ini
disebut sebagai Sequential / Linear / Conventional Searching (Pencarian
Konvensional secara berurutan / Linear).

Gambar 1. Ilustrasi Linear Search

Metode pencarian linear cukup mudah diimplementasikan. Program


akan mulai melakukan pencarian diawali dari ujung sebelah kiri larik (array) dan
melakukan perbandingan masing-masing elemen yang diakses dengan elemen
pencarian. Jika data telah ditemukan, maka pencarian selesai. Sementara jika
elemen yang dicari tidak ditemukan hingga hingga akhir larik maka nilai yang
dicari itu memang tidak ada didalam larik. Penggambaran metode Linear
Searching adalah sebagai berikut:
Pseudocode Inti Linear Searching
for index < array.length - 1 do
if arr[index] = sValue then
return True
else
return False
end if
end for

jika elemen yang dicari sudah ditemukan, fungsi yang ditulis diatas
akan segera mengembalikan nilai True kemudian berakhir. Jika akhir larik
dicapai dan fungsi tidak menghasilkan nilai True, hal ini berarti elemen yang
dicari memang tidak ada sehingga fungsi menghasilkan nilai False.

2
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

Karena proses array telah diurutkan terlebih dahulu, maka diketahui


bahwa elemen yang dicari nilainya sudah lebih besar dari elemen pada array
yang ditunjukkan oleh index. Maka sisa data tidak perlu dicari karena data yang
dicari tidak akan ditemukan pada bagian sisa array.

3.6 Binary Searching


Dalam proses pencarian menggunakan metode pencarian
konvensional, akan selalu dimulai dengan melakukan pencarian dari ujung kiri
larik dimana hal ini ditunjukkan oleh inisialisasi objek index dengan nilai 0 (nol).
Selanjutnya dilakukan penelusuran larik untuk melakukan pencarian hingga
ujung larik (yang ditandai menggunakan objek Length) tercapai. Dalam hal ini,
jika elemen yang dicari sudah ditemukan (ditandai dengan objek True) atau nilai
elemen yang dicari sudah lebih besar dari elemen pada larik yang ditunjuk
menggunakan index, karena elemen yang dicari pasti tidak akan pernah
ditemukan. Hal ini tentu akan mengurangi waktu yang dibutuhkan untuk
melakukan pencarian.

Gambar 2. Ilustrasi Binary Search

Pada metode Binary Search, cara kerja dari metode ini dapat
dibayangkan dengan mencoba menebak bilangan diantara angka 1 hingga 100.
Dalam setiap menebak sebuah angka, akan diketahui apakah tebakan itu benar,
terlalu besar, atau terlalu kecil. Tebakan terbaik saat pertama kali adalah angka
50. Jika tebakan tersebut terlalu tinggi, maka akan ditebak angka 25. Sementara
jika tebakan tersebut terlalu rendah, maka akan ditebak angka 75. Setiap kali
3
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

tebakan, akan selalu dipilih titik tengah dengan menyesuaikan batas bawah dan
batas atas bilangan (bergantung pada tebakan yang terlalu tinggi atau rendah).
Sebagai contoh, ditunjukkan pada gambar 2.
Untuk dapat mengimplementasikan Binary Searching, nilai pada Array
sudah harus terurut. Langkah pertama dalam algoritma ini adalah menentukan
batas bawah (min) dan batas atas (max). selanjutnya ditentukan batas tengah
(mid) dengan cara menjumlahkan batas atas dan batas bawah dan dibagi 2.
Dalam rumus matematika, dapat dituliskan dengan: mid = (max + min) / 2.
Pseudocode Inti Binary Searching
max = arr.length – 1
min = 0
while min <= max do
mid = (max + min) / 2
if arr[mid] = sValue then
return True
else if value < arr[mid]
max = mid – 1
else
min = mid + 1
end if
end while
return False

Langkah selanjutnya adalah membandingkan data pencarian (sValue)


dengan elemen yang ditunjuk oleh batas tengah (mid). Jika sama, proses
pencarian selesai. Jika nilai yang dicari lebih kecil dari titik tengah, batas atas
dihitung dengan mengurangi sebesar 1 posisi dari titik tengah. Sebaliknya, jika
nilai yang dicari lebih besar dari titik tengah, batas bawah dihitung dengan
menambahkan sebesar 1 posisi dari titik tengah. Algoritma Binary Search akan
berulang hingga batas bawah (min) sama dengan batas atas (max), yang berarti
pencarian telah selesai. Dalam hal ini, maka data yang dicari tidak ditemukan.

3.7 Praktikum
Bentuk dalam pengimplementasian algoritma Linear Search adalah
sebagai berikut:

4
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

Contoh Linear Search


<html>
<head>
<title>Struktur Data Linear Searching</title>
<script>
var dataArray = [2, 4, 6, 8, 12, 16, 22, 28, 32, 36, 44, 50, 54, 58, 66, 82, 86, 90, 94, 100];
document.write("Data Array: ");
document.writeln(dataArray.toString());

function LinearSearch(DataCari)
{
var Start = performance.now();

for (var i = 0; i < dataArray.length; i++)


{
if(dataArray[i] == DataCari.value)
{
document.getElementById("lblHasil").innerHTML = "Data ditemukan pada
indeks ke-" + i;
break;
}
else
{
document.getElementById("lblHasil").innerHTML = "Data tidak ditemukan";
}
}

var Stop = performance.now();


var TotWaktu = parseFloat((Stop - Start) / 1000).toFixed(5);
document.getElementById("lblWaktu").innerHTML = "Waktu komputasi: " +
TotWaktu + " detik";
}
</script>
</head>
<body>
<form>
<p>
<label>Data Yang Dicari: </label><input type="text" id="txtCari" size=10>
<input type="button" value="Tampil Data"
onclick="LinearSearch(txtCari.value)"><br>
<label id="lblHasil"></label><br>
<label id="lblWaktu"></label><br>
</p>
</form>
</body>
</html>

Sedangkan bentuk dalam pengimplementasian algoritma Binary Search


adalah sebagai berikut:

5
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

Contoh Binary Search


<html>
<head>
<title>Struktur Data Binary Searching</title>
<script>
var dataArray = [2, 4, 6, 8, 12, 16, 22, 28, 32, 36, 44, 50, 54, 58, 66, 82, 86, 90, 94, 100];
document.write("Data Array: ");
document.writeln(dataArray.toString());

function BinarySearch(DataCari)
{
var Start = performance.now();
var IndexAwal = 0;
var IndexAkhir = dataArray.length - 1;
var IndexTengah;
var hasil = false;
while(IndexAwal <= IndexAkhir)
{
IndexTengah = Math.floor((IndexAkhir + IndexAwal)/2);
if (dataArray[IndexTengah] == DataCari)
{
hasil = true;
break;
}
else if (DataCari < dataArray[IndexTengah])
IndexAkhir = IndexTengah - 1;
else
IndexAwal = IndexTengah + 1
}
if(hasil == true)
document.getElementById("lblHasil").innerHTML = "Data ditemukan pada indeks
ke-" + IndexTengah;
else
document.getElementById("lblHasil").innerHTML = "Data tidak ditemukan";

var Stop = performance.now();


var TotWaktu = parseFloat((Stop - Start) / 1000).toFixed(5);
document.getElementById("lblWaktu").innerHTML = "Waktu komputasi: " +
TotWaktu + " detik";
}
</script>
</head>
<body>
<form>
<p>
<label>Data Yang Dicari: </label><input type="text" id="txtCari" size=10>
<input type="button" value="Tampil Data"
onclick="BinarySearch(txtCari.value)"><br>
<label id="lblHasil"></label><br>
<label id="lblWaktu"></label><br>
</p>
</form>
</body>
</html>

6
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

Dimana penjelasan pada script diatas adalah sebagai berikut:


Pada bagian Body terdapat inputan berupa textbox yang digunakan
dalam mengisikan nilai yang dicari pada Array, dan tombol yang digunakan
untuk memanggil fungsi pencarian dengan memberikan nilai dari textbox. Label
hasil digunakan untuk menampilkan hasil pencarian, sedangkan label waktu
digunakan untuk menghitung waktu komputasi proses pencarian.
Bagian Body
<form>
<p>
<label>Data Yang Dicari: </label><input type="text" id="txtCari" size=10>
<input type="button" value="Tampil Data"
onclick="BinarySearch(txtCari.value)"><br>
<label id="lblHasil"></label><br>
<label id="lblWaktu"></label><br>
</p>
</form>

Didalam script akan dideklarasikan sebuah Array yang telah diberikan


nilai sebanyak 20 data yang telah terurut yang akan digunakan dalam pencarian
data.
Deklarasi Array
<script>
var dataArray = [2, 4, 6, 8, 12, 16, 22, 28, 32, 36, 44, 50, 54, 58, 66, 82, 86, 90, 94, 100];
document.write("Data Array: ");
document.writeln(dataArray.toString());

……. (proses selanjutnya)


</script>

Untuk menghitung waktu komputasi, maka dideklarasikan variable


untuk menampung waktu awal dan waktu akhir di awal dan akhir proses.
Penghitungan dilakukan dengan rumus: (waktu akhir – waktu awal) / 1000
untuk mendapatkan hasil dalam milisecond
Estimasi Waktu Proses
var Start = performance.now();

……… (Proses Pencarian)

var Stop = performance.now();


var TotWaktu = parseFloat((Stop - Start) / 1000).toFixed(5);

7
STIKOM PGRI BANYUWANGI | www.stikombanyuwangi.ac.id
Jln. Jendral Ahmad Yani No. 82 Telp (0333) 7700669 Fax. (0333) 417902 Banyuwangi - 68416

Untuk proses pencarian dengan kedua algoritma disesuaikan dengan


penjelasan yang telah dijabarkan pada Sub bab 3.5 dan 3.6.

3.8 Soal Latihan


Deklarasikan sebuah Array yang akan menampung nilai angka sebanyak
50 data yang didapatkan secara random. Dalam hal ini, maka urutkan data
dalam Array terlebih dahulu dengan menggunakan salah satu algoritma
pengurutan / sorting. Selanjutnya pilih salah satu algoritma pencarian antara
lain: Recursive Binary Search, Jump Search, Interpolation Search, dan
Exponential Search dalam melakukan pencarian data.
Buatlah program berdasarkan contoh kasus diatas, hitung waktu
komputasi dari metode pencarian yang dipilih, jelaskan proses dari metode
pencarian tersebut, serta buatlah algoritma dalam bentuk flowchart.
Orisinalitas tugas (tidak plagiat) wajib. Dikumpulkan pada pertemuan
selanjutnya dalam bentuk softcopy.

Anda mungkin juga menyukai