searching
Tujuan Pembelajaran Memahami konsep pencarian Mengenal beberapa algoritma pencarian Menerapkan algoritma pencarian dalam program
Definisi Pencarian adalah proses menemukan nilai (data) tertentu dalam sekumpulan nilai yang memiliki tipe data yang sama (tipe data dasar, bentukan).
Ilustrasi Dalam aplikasi nyata, seorang staf bagian personalia sering melihat data seorang pegawai. Hal yang ia lakukan adalah memasukkan nomor pegawai, kemudian detail pegawai yang bersangkutan ditampilkan. Pencarian seperti ini didasarkan pada sebuah kunci yang mempercepat pencarian data. Namun, tidak semua pencarian dengan kunci dimungkinkan. Ada 2 cara untuk melakukan pencarian data. Cara pertama dilakukan pada data yang urut dan cara yang kedua dengan data yang tidak terurut. Data yang tidak terurut memerlukan pencarian linear atau sekuensial. Adapun untuk data terurut, pencarian biner merupakan cara yang lebih efisien.
Pencarian Linear Teknik pencarian yang biasa digunakan untuk menemukan data yang tidak diurutkan , misalnya untuk menemukan nama dalam daftar nama yang tidak diurutkan menurut abjad nama orang. Pencarian akan dilakukan dari awal daftar dan kemudian dibaca satu persatu hingga nama yang dicari ditemukan.
Pencarian Linear Posisi -1 J 0 While J<N If L[J]=X Posisi J Cari linear(L, N, X) L adalah array dengan N elemen. X data yang dicari Nilai balik menyatakan posisi X dalam array L atau -1 kalau tidak ditemukan. Posisi -1 J 0 While J<N If L[J]=X Posisi J Keluar dari while End if End While Return Posisi
Efisiensi Pencarian Linear Berdasarkan bentuk algoritma di atas terlihat bahwa kompleksitas waktu pencarian secara linear berupa O(N). Apabila data yang dicari terletak pada posisi pertama, best case sebesar O(1). Keadaan terjelek didapatkan jika data terdapat pada posisi terakhir, yang memberikan O(N).
Pencarian Biner Digunakan untuk mencari data yang telah diurutkan. Konsep pencariannya dilakukan sebagai berikut: cari elemen dalam array yang terletak di tengah – tengah dari batas bawah hingga batas atas. Lakukan pembandingan data yang dicari dengan data yang berada di tengah. Dalam hal ini akan terdapat 3 kemungkinan. Jika kedua data yang dibandingankan sama maka data yang dicari ditemukan. Apabila yang dicari bernilai lebih kecil dari pada elemen yang berada di tengah array maka pencarian dilakukan pada data yang berada di kiri elemen tengah. Apabila yang dicari bernilai lebih besar daripada elemen yang berada di tengah array maka pencarian dilakukan pada data yang berada di kanan elemen tengah.
Algoritma Pencarian Biner Cari Biner (L,N,X) L adalah array dengan N elemen X adalah data yang dicari Bawah 0 Atas N – 1 Posisi -1 //data tidak ketemu While atas >= bawah Tengah (atas + bawah) / 2 If X > L[tengah] // kemungkinan data berada pada bagian kanan Bawah tengah + 1 Else If X < L[Tengah] // kemungkinan data berada pada bagian kiri Atas tengah – 1
Algoritma Pencarian Biner // ketemu Posisi tengah Bawah atas + 1 End if End while Cari Linear posisi