Algoritma (CCC110) Sesi KJ301 Iksan Ramadhan, S.Kom., M.Kom Sesi Perkuliahan 03 Algoritma Pencarian www.esaunggul.ac.id Algoritma Pencarian (Searching) o Proses pencarian adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe data sama, sebagai contoh untuk melakukan update (perubahan) data tertentu, langkah awal yang harus dilakukan adalah dengan menemukan keberadaan data tersebut didalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat di ubah nilainya dengan data yang baru. www.esaunggul.ac.id o Algoritma pencarian yang paling sederhana adalah metode sequential search atau dapat disebut juga dengan linear search (pencarian lurus). Pada dasarnya algoritma ini dalam prosenya yaitu melakukan pencarian dengan membandingkan setiap baris elemen satu persatu secara beruntun, mulai dari elemen pertama sampai elemen yang dicari ditemukan, atau seluruh elemen telah diperiksa. www.esaunggul.ac.id contoh o Misalkan nilai yang dicari adalah : x = 21 Dari baris data berikut : 13,16,14,21 Indeks yang dikembalikan adalah : indeks = 3 o Misalkan nilai yang dicari adalah : x = 13 Dari baris data berikut : 13 Indeks yang dikembalikan : indeks = 0 o Misalkan nilai yang dicari adalah : x = 15 Dari baris data berikut : 13, 16, 14, 21, 76, 21 Indeks larik yang dikembalikan : index = -1 www.esaunggul.ac.id Terdapat dua golongan sequential search o o o o Sequential search tanpa boolean Tanpa sentinel Dengan sentinel Sequential search dengan boolean www.esaunggul.ac.id Algoritma sequential search tanpa boolean tanpa sentinel o Misalkan diberikan data sebagai berikut : 7 6 3 9 8 0 1 2 3 4 Data yang dicari : 9 •Indeks 0 = 9 (Salah) •Indeks 1 = 9 (Salah) •Indeks 2 = 9 (Salah) •Indeks 3 = 9 (Benar) Maka data yang dicari ditemukan pada indeks ke -3 www.esaunggul.ac.id Algoritma sequential search tanpa boolean dengan sentinel o Misalkan diberikan data sebagai berikut : Data yang dicari : 9 o Tempatkan data yang dicari pada sentinel. o Telusuri array seperti sequential search tanpa sentinel, jika data ditemukan pada sentinel, maka data yang dicari tidak ada/tidak ditemukan, tapi jika data yang dicari ditemukan bukan pada sentinel, maka data yang dicari ditemukan. www.esaunggul.ac.id Algoritma sequential search dengan boolean o Misalkan diberikan data sebagai berikut : 7 6 3 9 8 0 1 2 3 4 Data yang dicari : 9 •Indeks 0 = 9 •Indeks 1 = 9 •Indeks 2 = 9 •Indeks 3 = 9 ? (Set variable bernilai True atau 1) www.esaunggul.ac.id o Secara umum algoritma pencarian beruntun berjalan lambat. Waktu pencarian sebanding dengan jumlah baris data. Misalkan data sebanyak N baris. Maka, pada kasus dimana x terdapat didalam data tersebut atau x ditemukan pada data yang terakhir, kita harus melakukan perbandingan seluruh baris data, yang berarti jumlah perbandingan yang terjadi sebanyak N kali. Dengan kata lain waktu pencarian dengan algoritma ini sebanding dengan N. Bayangkan bila data sebanyak 100.000 baris, maka kita harus melakukan perbandingan sebanyak 100.000 baris data. Andaikan satu operasi perbandingan membutuhkan waktu 0,01 detik, maka untuk 100.000 buah perbandingan diperlukan waktu sebesar 1000 detik atau 16,7 menit. Jadi dapat diambil kesimpulan bahwa algoritma ini tidak cocok untuk diterapkan pada data bervolume besar. www.esaunggul.ac.id Algoritma Binary Search (Pencarian bagi dua) o Pencarian data yang terurut menunjukkan kinerja yang lebih baik daripada pencarian pada data yang belum terurut. Terdapat algoritma pencarian pada data terurut yang paling efisien, yaitu algoritma binary search (pencarian bagidua). Algoritma ini digunakan untuk kebutuhan pencarian data dengan waktu yang cepat. www.esaunggul.ac.id o Misalkan diberikan data sebagai berikut : 2 4 5 7 9 0 1 2 3 4 Data yang dicari : 4 1.Bagi data menjadi dua bagian untuk mencari posisi tengah (k) dengan cara indeks atas (Ia) dijumlahkan dengan indeks bawah (Ib) lalu dibagi dua. 2.Periksa data di posisi tengah (5), lalu bandingkan apakah sama atau tidak(5 = 4? F), karena tidak sama maka akan diperiksa apakah data di posisi tengah lebih kecil dari data yang dicari (5 < 4 ? F) karena lebih besar maka pencarian dilanjutkan ke bagian kiri dengan cara menarik Indeks bawah ke kiri (Ib = k – 1). 3.Hitung kembali titik tengah dari larik yang ditinjau (didapat k =1) 4.ulangi langkah 1 s/d langkah 2 sampai data ditemukan. www.esaunggul.ac.id o Kedua algoritma pencarians sebelumnya mempunyai kelebihan dan kekurangan masing-masing. Algortima pancarian beruntun dapat digunakan baik untuk data yang belum terurut maupun untuk data yang sudah terurut. Sebaliknya, algoritma binary search hanya dapat digunakan untuk data yang sudah terurut saja. www.esaunggul.ac.id Terima Kasih www.esaunggul.ac.id