My first Magazine pemrograman-kompetitif-dasar | Page 36

3 Pencarian dan Pengurutan Algoritma 10 Contoh Kode Pencarian Sederhana. 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: procedure SEARCH (h, X) hasil ← 0 for i ← 1, N do if (h[i] = X) then hasil ← i break end if end for if (hasil = 0) then print "beri hadiah lain" else print hasil end if end procedure . Artinya belum ditemukan Algoritma pencarian dengan membandingkan elemen satu per satu semacam ini disebut dengan sequential search atau linear search . Jika ada N elemen pada daftar yang perlu dicari, maka paling banyak diperlukan N operasi perbandingan. Dalam kompleksitas waktu, performa algoritma sequential search bisa dinyatakan dalam O(N). 3.1.2 Binary Search Apakah ada algoritma pencarian yang lebih baik? Misalkan Anda diberikan Kamus Besar Bahasa Indonesia (KBBI) yang mengandung 90.000 kata. Anda kemudian ingin mencari definisi suatu kata pada KBBI. Dengan sequential search perlu dilakukan paling banyak 90.000 operasi. Apakah kita sebagai manusia melakukan perbandingan sampai 90.000 kata? Ternyata, kita tidak perlu mencari kata satu per satu, halaman demi halaman, sampai 90.000 kata. Bahkan, kita dapat mencari arti suatu kata cukup dalam beberapa perbandingan, yang jauh lebih sedikit dari 90.000. Bagaimana hal ini bisa terjadi? Sifat Khusus: Terurut KBBI memiliki sebuah sifat khusus, yaitu terurut berdasarkan abjad. Dengan sifat ini, kita bisa membuka halaman tengah dari KBBI, lalu periksa apakah kata yang kita cari ada pada halaman tersebut. Misalkan kata yang kita cari berawalan ’W’. Jika halaman tengah hanya menunjukkan daftar kata dengan awalan ’G’. Jelas bahwa kata yang kita cari tidak mungkin berada di separuh pertama kamus. Ulangi hal serupa dengan separuh belakang kamus, buka bagian tengahnya dan bandingkan. Dengan cara ini, setiap perbandingan akan mengeliminasi separuh rentang pencarian. Pencarian seperti ini disebut dengan binary search . Analisis Binary Search Misalkan terdapat sebuah daftar berisi N elemen, dan kita perlu mencari salah satu elemen. Banyaknya operasi maksimal yang dibutuhkan sampai suatu elemen bisa dipastikan keberada- annya sama dengan panjang dari barisan [N, N 2 , N 4 , N 8 , ..., 2, 1] yakni sebesar dlog 2 Ne, sehingga kompleksitasnya O(log N). 26