Dokumen tersebut menjelaskan tentang algoritma pencarian binary. Algoritma ini digunakan untuk mencari nilai tertentu dalam array yang terurut dengan mengurangi setengah data pada setiap langkah. Pencarian dimulai dari nilai tengah, kemudian membandingkannya dengan nilai yang dicari untuk menentukan bagian mana yang akan dicari selanjutnya. Proses ini diulang hingga nilai ditemukan atau tidak.
2. PENDAHULUAN
• Salah satu syarat agar binary search dapat dilakukan adalah data sudah
dalam keadaan urut. Dengan kata lain, apabila data belum dalam keadaan
urut, binary search tidak dapat dilakukan.
• Sebuah algoritma pencarian biner (atau pemilahan biner) adalah sebuah
teknik untuk menemukan nilai tertentu dalam sebuah larik (array) linear,
dengan menghilangkan setengah data pada setiap langkah
• Sebuah pencarian biner mencari nilai tengah (median), melakukan
pembandingan untuk menentukan apakah nilai yang dicari ada sebelum
atau sesudahnya, kemudian mencari setengah sisanya dengan cara yang
sama. Sebuah pencarian biner adalah salah satu contoh dari algoritma
divide and conquer (atau lebih khusus algoritma decrease and conquer)
dan sebuah pencarian dikotomi.
3. ATURAN BINARY SEARCH
• Prinsip dari Binary search dapat dijelaskan sebagai berikut :
• Mula-mula diambil posisi awal 0 dan posisi akhir = N-1, kemudian dicari
posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2. Kemudian data
yang dicari dibandingkan dengan data tengah.
• Jika lebih kecil, proses dilakukan kembali tetapi posisi akhir dianggap
sama dengan posisi tengah –1.
• Jika lebih besar, proses dilakukan kembali tetapi posisi awal dianggap
sama dengan posisi tengah +1.
• Jika data sama, berarti data ditemukan.
4. ALGORITMA
• Penerapan terbanyak dari pencarian biner adalah untuk mencari
sebuah nilai tertentu dalam sebuah list terurut. Jika dibayangkan,
pencarian biner dapat dilihat sebagai sebuah permainan tebak-
tebakan, kita menebak sebuah bilangan, atau nomor tempat, dari
daftar (list) nilai.
• Pencarian diawali dengan memeriksa nilai yang ada pada posisi
tengah list, oleh karena nilai-nilainya terurut, kita mengetahui apakah
nilai terletak sebelum atau sesudah nilai yang di tengah tersebut,
dan pencarian selanjutnya dilakukan terhadap setengah bagian
dengan cara yang sama.
5. PENCARIAN BINER (BINARY SEARCH) DILAKUKAN UNTUK :
• memperkecil jumlah operasi pembandingan yang harus dilakukan
antara data yang dicari dengan data yang ada di dalam tabel,
khususnya untuk jumlah data yang sangat besar ukurannya.
• Prinsip dasarnya adalah melakukan proses pembagian ruang
pencarian secara berulang-ulang sampai data ditemukan atau
sampai ruang pencarian tidak dapat dibagi lagi (berarti ada
kemungkinan data tidak ditemukan).
• Syarat utama untuk pencarian biner adalah data di dalam tabel
harus sudah terurut, misalkan terurut menaik.
6. CONTOH PENULISAN ALGORITMA BINARY SEARCH
Kamus
Const N : integer = 8 { misalkan jumlah elemen array maksimum = 8 }
Type A = array [ 1 ..... N ] of integer
Cari, BatasAtas, BatasBawah, Tengah : Integer
Ketemu : boolean
ALGORITMA
Input (cari) { meminta nilai data yang akan dicari}
BatasAtas 1 { indeks array dimulai dari 1 }
BatasBawah N
Ketemu False
While (BatasAtas < BatasBawah) and (not ketemu) do
Tengah (BatasAtas + BatasBawah) div 2
If A [Tengah] = cari then
Ketemu true
Else
If ( A [Tengah] < cari ) then { cari di bagian kanan }
BatasAtas Tengah + 1
Else
BatasBawah Tengah – 1 { cari di bagian kiri }
Endif
Endif
EndWhile
If (ketemu) then
Output ( ‘Data berada di index nomor’, Tengah )
Else Output ( ‘Data tidak ditemukan’ )
Endif
7. CONTOH DATA KASUS
Kasus 1 : cari = 12
Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12, berarti loop pertama data langsung ditemukan
Kasus 2 : cari = 15
Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 < cari = 15, berarti BatasAtas = Tengah + 1 = 4 + 1 = 5
Loop kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 8) div 2 = 6
A [Tengah] = A [6] = 25 > cari = 15, berarti BatasBawah = Tengah - 1 = 6 - 1 = 5
Loop ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (5 + 5) div 2 = 5
A [Tengah] = A [5] = 15, berarti setelah loop ketiga, data ditemukan
Kasus 3 : cari = 10
Loop pertama : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 8) div 2 = 4
A [Tengah] = A [4] = 12 > cari = 10, berarti BatasBawah = Tengah - 1 = 4 - 1 = 3
Loop kedua : Tengah = (BatasAtas + BatasBawah) div 2 = (1 + 3) div 2 = 2
A [Tengah] = A [2] = 5 < cari = 10, berarti BatasAtas = Tengah + 1 = 2 + 1 = 3
Loop ketiga : Tengah = (BatasAtas + BatasBawah) div 2 = (3 + 3) div 2 = 3
A [Tengah] = A [3] = 8, berarti setelah loop ketiga, data tidak ditemukan
Untuk jumlah data sebanyak n, maka proses pembandingan maksimal sebanyak ( log n ) kali. Untuk contoh di atas, jumlah data 8, maka
proses pembandingan maksimal sebanyak 3 kali.