Anda di halaman 1dari 21

MAKALAH

BINARY SEARCH
Dosen Pengampu : Adil Setiawan M.kom

Nama Kelompok :
Ade Rahmayani (2215000001)
Berkat J.S Hutasoit (2215000004)
Hairiza Salsa Bila (2215000012)
M. Iqbal Nazwan Wijaya (2215000015)
Nabilah Juni Tan Zuimei (2215000020)

PROGRAM REKAYASA PERANGKAT LUNAK

FAKULTAS TEKNIK DAN ILMU KOMPUTER

UNIVERSITAS POTENSI UTAMA

2023
Kata Pengantar

Puji syukur kami panjatkan kehadirat Allah SWT, yang telah melimpahkan rahmat dan
hidayah-Nya sehingga kami dapat menyelesaikan makalah ini dengan judul "Binary Search".
Kami juga mengucapkan terima kasih kepada semua pihak yang telah memberikan dukungan,
bimbingan, dan inspirasi sehingga makalah ini dapat terselesaikan.
Makalah ini disusun sebagai salah satu tugas akademis untuk memenuhi syarat dalam mata
kuliah Pemprograman Berorientasi Objek. Melalui makalah ini, kami berusaha mengangkat
suatu topik yang diharapkan dapat memberikan pemahaman lebih dalam terkait dengan
Binary Search. Adapun penelitian dan studi pustaka yang kami lakukan diharapkan dapat
menjadi kontribusi kecil dalam pengembangan ilmu pengetahuan.
Kami menyadari bahwa penyusunan makalah ini tidak lepas dari keterbatasan pengetahuan
dan kemampuan kami. Oleh karena itu, kritik dan saran yang bersifat membangun sangat
kami harapkan demi perbaikan pada makalah ini maupun sebagai bekal pengetahuan di masa
mendatang.
Terakhir, kami berharap makalah ini dapat memberikan manfaat dan inspirasi bagi pembaca
yang mengaksesnya. Semoga makalah ini dapat menjadi bahan rujukan yang bermanfaat
dalam pengembangan pemahaman tentang Binary Search.
Akhir kata, kami mengucapkan terima kasih kepada semua pihak yang telah membantu
dalam proses penyusunan makalah ini.

Semoga Allah SWT meridhoi segala upaya kita.

Medan, 4 Desember 2024

Penullis

2
Kata Pengantar..................................................................................................2
BAB 1................................................................................................................. 4
PENDAHULUAN...........................................................................................4
A. Latar Belakang.......................................................................................4
B. Rumusan masalah..................................................................................4
C. Tujuan.....................................................................................................5
D. Manfaat...................................................................................................5
BAB II................................................................................................................ 6
PEMBAHASAN.............................................................................................6
A. Pengertian dan Sejarah Binary Search...............................................6
B. Algoritma dari Binary search..............................................................7
C. Fungsi dari Binary Search....................................................................7
D. Prinsip dari Binary Search....................................................................8
E. Rumus pada Binary Seacrh..................................................................9
F. Implementasi pada Binary Seacrh.....................................................11
G. Studi Kasus...........................................................................................13
H. Kekurangan Dan Kelebihan Binary Search.......................................16
I. SOAL...................................................................................................18
BAB 3............................................................................................................... 22
PENUTUP.....................................................................................................22
Kesimpulan................................................................................................22
Saran..........................................................................................................22
DAFTAR PUSTAKA......................................................................................23

3
BAB 1
PENDAHULUAN

A. Latar Belakang
Seiring dengan berkembangnya Teknologi Informasi, yang membutuhkan kecepatan dan
ketepatan dalam berbagai aspek kehidupan. Kita dituntut untuk bergerak cepat dalam segala
hal, termasuk juga dalam bidang komunikasi informasi. Salah satunya dalam bidang statistic
yang meliputi pencarian data. Sehingga banyak programer yang membuat program yang
mempermudah kerja dalam bidang statistika dan informasi, yakni dalam hal pencarian data.
Dari program pencarian data terdapat algoritma-algoritma yang digunakan untuk mencari
Binary search adalah algoritma pencarian untuk data yang terurut. Pencarian dilakukan
dengan cara menebak apakah data yang dicari berada ditengah-tengah data, kemudian
membandingkan data yang dicari dengan data yang ada ditengah. Bila data yang ditengah
sama dengan data yang dicari, berarti data ditemukan. Namun, bila data yang ditengah lebih
besar dari data yang dicari, maka dapat dipastikan bahwa data yang dicari kemungkinan
berada disebelah kiri dari data tengah dan data disebelah kanan data tengah dapat diabai.
Upper bound dari bagian data kiri yang baru adalah indeks dari data tengah itu sendiri.
Sebaliknya, bila data yang ditengah lebih kecil dari data yang dicari, maka dapat dipastikan
bahwa data yang dicari kemungkinan besar berada disebelah kanan dari data tengah. Lower
bound dari data disebelah kanan dari data tengah adalah indeks dari data tengah itu sendiri
ditambah 1. Demikian seterusnya.

B. Rumusan masalah
 Apa sejarah awal dari binary search, dan bagaimana evolusinya dari waktu ke waktu?
 Bagaimana langkah-langkah algoritma binary search diimplementasikan?
 Mengapa binary search digunakan dalam pencarian data?
 Apa keunggulan dan syarat utama dari binary search?

4
C. Tujuan
 Memahami konsep dasar binary search dan bagaimana algoritmanya bekerja.
 Mengetahui sejarah perkembangan binary search dari waktu ke waktu.
 Memahami langkah-langkah algoritma binary search.
 Mengerti mengapa algoritma tersebut efektif dalam pencarian data.
 Mengetahui fungsi utama dari binary search.
 Memahami prinsip dasar yang menjadi dasar keberhasilan binary search.

D. Manfaat
1. Efisiensi Pencarian Data:
Binary search membantu mengurangi jumlah operasi pembandingan yang harus dilakukan
untuk menemukan elemen tertentu dalam himpunan data terurut. Hal ini membuatnya sangat
efisien, terutama pada himpunan data besar.
2. Kecepatan Eksekusi:
Algoritma binary search bekerja dengan cara membagi-bagi himpunan data, yang
menghasilkan eksekusi yang lebih cepat dibandingkan dengan metode pencarian linier,
terutama untuk data yang terstruktur dan besar.
3. Penerapan dalam Berbagai Konteks:
Binary search dapat diterapkan dalam berbagai konteks, mulai dari basis data hingga
implementasi dalam bahasa pemrograman. Ini membuatnya sangat serbaguna dan digunakan
secara luas dalam pengembangan perangkat lunak.
4. Syarat Terurut Menaik:
Binary search memerlukan bahwa data dalam himpunan sudah terurut menaik. Meskipun ini
dapat dianggap sebagai syarat, tetapi dalam banyak kasus, data diurutkan sehingga
memungkinkan penggunaan binary search.
5. Optimal pada Himpunan Data Besar:
Keunggulan utama binary search muncul pada himpunan data yang besar. Pencarian linier
akan membutuhkan waktu yang proporsional dengan ukuran himpunan data, sementara
binary search membagi data menjadi dua bagian, menghasilkan pencarian yang lebih cepat.
6. Penerapan dalam Rekursi:
Binary search dapat diimplementasikan secara rekursif, memanfaatkan pendekatan
pemecahan masalah yang efisien. Hal ini dapat membuat kode lebih bersih dan mudah
dimengerti dalam beberapa kasus.

5
BAB II
PEMBAHASAN

A. Pengertian dan Sejarah Binary Search


Pencarian biner, yang juga dikenal sebagai binary search, adalah algoritma yang
digunakan untuk mencari elemen tertentu dalam suatu himpunan data terurut. Metode ini
bekerja dengan membagi himpunan data menjadi dua bagian, kemudian memeriksa
apakah elemen yang dicari terletak di bagian kiri atau kanan. Langkah ini diulang secara
berulang hingga elemen yang dicari ditemukan atau sampai bagian yang diperiksa tidak
lagi dapat dibagi.
Sejarah binary search merentang sepanjang waktu dan memainkan peran penting dalam
evolusi algoritma pencarian. Pada akhir 1940-an, John Mauchly, seorang pionir ilmu
komputer Amerika, memperkenalkan konsep ini. Waktu itu, dunia komputasi sedang
mengalami perubahan besar dengan munculnya komputer elektronik pertama.
Sebelum binary search, metode pencarian yang umum digunakan adalah pencarian
berurutan, yang melibatkan penelusuran satu per satu. Pendekatan ini menjadi semakin
tidak efisien seiring dengan pertumbuhan kumpulan data yang dihadapi oleh para
ilmuwan komputer. Ketika kumpulan data menjadi besar, pencarian berurutan memakan
banyak waktu dan sumber daya.
Pada tahun 1946, Mauchly menemukan solusi yang mengubah paradigma pencarian.
Binary search bekerja dengan membagi setengah jumlah elemen pada setiap langkah.
Proses dimulai dengan membandingkan nilai tengah dengan elemen yang dicari, dan
kemudian mengurangi ruang pencarian setengahnya setiap kali. Jika nilai tengah lebih
besar dari elemen yang dicari, pencarian dilanjutkan ke setengah kiri, dan sebaliknya.
Kecepatan binary search tidak hanya berasal dari kemampuannya untuk mempersempit
ruang pencarian dengan cepat, tetapi juga dari sifatnya yang menghasilkan kompleksitas
waktu logaritmik O(log n). Ini menjadikannya algoritma pencarian yang sangat efisien,
terutama pada set data besar.
Sejak penemuan ini, binary search telah menjadi landasan algoritma dalam berbagai
bidang ilmu komputer. Dari basis data hingga algoritma pengurutan, binary search terus
memainkan peran penting dalam pengembangan perangkat lunak. Kemampuannya untuk
memberikan solusi cepat dan efisien membuatnya menjadi alat yang sangat dicari oleh
para pengembang perangkat lunak modern.
Binary search bukan hanya sebuah algoritma; itu adalah simbol evolusi dalam dunia
komputasi. Pencarian yang dulunya memakan waktu berjam-jam, kini dapat diselesaikan
dalam hitungan logaritmik. John Mauchly, dengan penemuannya, telah membuka pintu
menuju pencarian yang lebih efisien dan cepat, membentuk fondasi bagi banyak
pengembangan teknologi komputer yang kita nikmati hari ini.

6
Jon Bentley,”binary search”,
https://en.wikipedia.org/wiki/Binary_search_algorithm#History
(11 ei 2019,05:30).

B. Algoritma dari Binary search


Algoritma pencarian biner dapat dituliskan sebagai berikut :
1L←0
2R←N-1
3 ketemu ← false
4 Selama (L <= R) dan (tidak ketemu) kerjakan baris 5 sampai dengan 8
5 m ← (L + R) / 2
83
6 Jika (Data[m] = x) maka ketemu ← true
7 Jika (x < Data[m]) maka R ← m – 1
8 Jika (x > Data[m]) maka L ← m + 1
9 Jika (ketemu) maka m adalah indeks dari data yang dicari, jika tidak data tidak
Ditemukan.

C. Fungsi dari Binary Search


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.

http://kabehatake.blogspot.com/2010/05/algoritma-binary-search.html

7
D. Prinsip dari Binary Search
 Data diambil dari posisi 1 sampai posisi akhir N
 Kemudian cari posisi data tengah dengan rumus (posisi awal + posisi akhir) / 2
 Kemudian data yang dicari dibandingkan dengan data yang di tengah, apakah sama
atau lebih kecil, atau lebih besar?
 Jika lebih besar, maka proses pencarian dicari dengan posisi awal adalah posisi tengah
+1
 Jika lebih kecil, maka proses pencarian dicari dengan posisi akhir adalah posisi tengah
–1
 Jika data sama, berarti ketemu.

Untuk lebih jelasnya, perhatikan contoh berikut. Misalkan kita ingin mencari 17 pada
sekumpulan data berikut:

1. Mula–mula dicari data tengah, dengan rumus (1+ 9) / 2 = 5.


2. Berarti data tengah adalah data ke-5, yaitu 15.
3. Data yang dicari, yaitu 17, dibandingkan dengan data tengah ini.
4. Karena 17 > 15, berarti proses dilanjutkan tetapi kali ini posisi awal dianggap sama
dengan posisi tengah + 1 atau 6.

1. Data tengah yang baru didapat dengan rumus (6 + 9) / 2 = 7. Berarti data tengah yang
baru adalah data ke-7, yaitu 23.
2. Data yang dicari, yaitu 17 dibandingkan dengan data tengah ini.
3. Karena 17 < 23, berarti proses dilanjutkan tetapi kali ini posisi akhir dianggap sama
dengan posisi tengah – 1 atau 6.

1. Data tengah yang baru didapat dengan rumus (6 + 6) / 2 = 6. Berarti data tengah yang
baru adalah data ke-6, yaitu 17.
2. Data yang dicari dibandingkan dengan data tengah ini dan ternyata sama. Jadi data
ditemukan pada indeks ke-6.
3. Bagaimana jika data yang dicari tidak ada, misalnya 16?
4. Pencarian biner ini akan berakhir jika data ditemukan atau posisi awal lebih besar dari
posisi akhir.
5. Jika posisi awal sudah lebih besar daripada posisi akhir berarti data tidak ditemukan.
6. Untuk lebih jelasnya perhatikan proses pencarian 16 pada data di atas. Prosesnya
hampir sama dengan pencarian 17. Tetapi setelah posisi awal = posisi akhir = 6,
proses masih dilanjutkan lagi dengan posisi awal = 6 dan posisi akhir = 5.Disini dapat
dilihat bahwa posisi awal lebih besar daripada posisi akhir, yang artinya data tidak
ditemukan.

Robert Sedgewick “Algoritm”, hal, 484-585.

8
E. Rumus pada Binary Seacrh
Rumus yang digunakan dalam pencarian biner adalah sebagai berikut:
1. Rumus Pencarian Biner Iteratif:
Pencarian biner biasanya dilakukan pada sebuah himpunan data terurut, seperti sebuah array
atau daftar. Untuk mencari elemen tertentu dalam himpunan data tersebut, Anda dapat
menggunakan rumus berikut:
def binary_search(arr, target):
left = 0
right = len(arr) - 1

while left <= right:


mid = (left + right) // 2
if arr[mid] == target:
return mid # Elemen ditemukan di indeks 'mid'
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1

return -1 # Elemen tidak ditemukan

2. Rumus Binary Search Rekursif


Pencarian biner juga dapat diimplementasikan dengan rekursi. Berikut ini adalah rumusnya:
def binary_search_recursive(arr, target, left, right):
if left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid # Elemen ditemukan di indeks 'mid'
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, right)
else:
return binary_search_recursive(arr, target, left, mid - 1)
else:
return -1 # Elemen tidak ditemukan

9
Pada kedua rumus di atas, arr adalah himpunan data yang terurut, dan target adalah elemen
yang ingin dicari. Pencarian biner berfungsi dengan membandingkan elemen tengah
himpunan data dengan elemen yang dicari, dan terus mengurangi wilayah pencarian hingga
elemen tersebut ditemukan atau wilayah pencarian tidak lagi dapat dipecah. Jika elemen
ditemukan, indeksnya dikembalikan; jika tidak, -1 dikembalikan untuk menunjukkan bahwa
elemen tidak ada dalam himpunan data.

Cormen, T. H. (2013). "Algorithms Unlocked." , hal, 584-652.

F. Implementasi pada Binary Seacrh


1. Implementasi Pencarian Biner Iteratif Python:
def binary_search(arr, target):
left, right = 0, len(arr) - 1

while left <= right:


mid = (left + right) // 2
if arr[mid] == target:
return mid # Elemen ditemukan di indeks 'mid'
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1

return -1 # Elemen tidak ditemukan


# Contoh penggunaan:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search(arr, target)
if result != -1:
print(f"Elemen {target} ditemukan di indeks {result}.")
else:
print(f"Elemen {target} tidak ditemukan.")

2. Implementasi Pencarian Biner Rekursif Python:


def binary_search_recursive(arr, target, left, right):
if left <= right:

10
mid = (left + right) // 2
if arr[mid] == target:
return mid # Elemen ditemukan di indeks 'mid'
elif arr[mid] < target:
return binary_search_recursive(arr, target, mid + 1, right)
else:
return binary_search_recursive(arr, target, left, mid - 1)
else:
return -1 # Elemen tidak ditemukan
# Contoh penggunaan:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5
result = binary_search_recursive(arr, target, 0, len(arr) - 1)
if result != -1:
print(f"Elemen {target} ditemukan di indeks {result}.")
else:
print(f"Elemen {target} tidak ditemukan.")
Kedua contoh di atas mengimplementasikan pencarian biner untuk mencari elemen 5 dalam
array yang diurutkan. Anda dapat mengganti nilai target dan arr sesuai dengan data yang
Anda miliki. Pencarian biner efisien untuk himpunan data yang terurut, dan ini adalah dua
cara umum untuk mengimplementasikannya.

http://aloen-pop.blogspot.com/2009/06/binary-searching.html

G. Studi Kasus
Sebuah perusahaan memiliki database besar yang menyimpan informasi karyawan mereka.
Dengan pertumbuhan jumlah karyawan, mencari data karyawan tertentu menggunakan
metode pencarian berurutan menjadi semakin tidak efisien. Oleh karena itu, perusahaan ingin
meningkatkan efisiensi pencarian data dalam database mereka dengan mengimplementasikan
algoritma binary search.

Tujuan
1. Mengurangi waktu pencarian data karyawan dalam database.
2. Meminimalkan penggunaan sumber daya komputasi untuk operasi pencarian.

Implementasi Binary Search dalam Database Karyawan:


1. Pemrosesan Awal Data:
 Mengurutkan data karyawan berdasarkan identifikasi unik, seperti ID
karyawan.

11
 Menyimpan data karyawan yang terurut ke dalam database.
2. Implementasi Algoritma Binary Search:
 Menggunakan algoritma binary search untuk mencari data karyawan
berdasarkan ID.
 Menggunakan rumus pencarian biner iteratif atau rekursif sesuai kebutuhan
dan karakteristik aplikasi.
3. Pengukuran Kinerja:
 Membandingkan waktu pencarian sebelum dan setelah implementasi binary
search.
 Memantau penggunaan sumber daya komputasi (CPU, RAM) selama operasi
pencarian.
4. Penanganan Kasus Tidak Ditemukan:
 Memberikan pesan atau log jika data karyawan yang dicari tidak ditemukan.
 Menangani kasus di mana ID yang dicari tidak ada dalam database.

Kode python dalam penerapan penyelesaian masalah


def binary_search(arr, target):
left, right = 0, len(arr) - 1

while left <= right:


mid = (left + right) // 2
if arr[mid] == target:
return mid # Elemen ditemukan di indeks 'mid'
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1

return -1 # Elemen tidak ditemukan

# Contoh penggunaan:
arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
target = 5

12
result = binary_search(arr, target)
if result != -1:
print(f"Elemen {target} ditemukan di indeks {result}.")
else:
print(f"Elemen {target} tidak ditemukan.")

(dalam kode diatas itu adalah menggunakan metode pencarian biner iteratif)

biner iteratif
Pencarian biner iteratif adalah sebuah pendekatan dalam mencari elemen tertentu dalam suatu
himpunan data terurut dengan menggunakan iterasi atau perulangan. Pada dasarnya,
algoritma ini bekerja dengan cara membagi himpunan data menjadi dua bagian, kemudian
memeriksa apakah elemen yang dicari terletak di bagian kiri atau kanan dari titik tengah
himpunan tersebut. Proses ini diulang secara berulang hingga elemen yang dicari ditemukan
atau himpunan yang diperiksa tidak dapat dibagi lagi.

Berikut adalah langkah-langkah umum dari pencarian biner iteratif:

1. Tentukan batas-batas awal (left) dan akhir (right) dari himpunan data.
2. Lakukan iterasi atau perulangan selama batas awal tidak melebihi batas akhir.
3. Hitung indeks tengah (mid) dari himpunan data.
4. Bandingkan elemen di indeks tengah dengan elemen yang dicari.
5. Jika elemen di indeks tengah sama dengan elemen yang dicari, pencarian selesai dan
indeks tengah dikembalikan.
6. Jika elemen di indeks tengah kurang dari elemen yang dicari, berarti elemen yang
dicari berada di sebelah kanan indeks tengah, maka perbatasan kiri (left) diperbarui.
7. Jika elemen di indeks tengah lebih besar dari elemen yang dicari, berarti elemen yang
dicari berada di sebelah kiri indeks tengah, maka perbatasan kanan (right) diperbarui.
8. Ulangi proses dari langkah 3.
9. Pencarian biner iteratif memiliki kompleksitas waktu logaritmik O(log n), di mana n
adalah jumlah elemen dalam himpunan data. Hal ini menjadikan algoritma ini sangat
efisien, terutama pada set data yang besar.

13
Contoh implementasi pencarian biner iteratif dapat dilihat pada kode Python yang telah
disediakan sebelumnya.

Kesimpulan
Efisiensi Pencarian:
 Pencarian biner iteratif membuktikan dirinya sebagai metode pencarian yang sangat
efisien, terutama pada himpunan data yang besar. Melalui pendekatan perbagian dan
pembandingan terhadap elemen di tengah himpunan data, pencarian biner
memperbolehkan proses pencarian yang sangat cepat.
Kompleksitas Waktu:
 Algoritma pencarian biner iteratif memiliki kompleksitas waktu logaritmik O(log n),
di mana n adalah jumlah elemen dalam himpunan data. Hal ini berarti waktu eksekusi
algoritma tumbuh secara lambat seiring dengan pertumbuhan jumlah elemen,
menjadikannya pilihan yang efisien untuk data berskala besar.
Kelebihan Dibandingkan Pencarian Berurutan:
 Pencarian biner iteratif memiliki keunggulan signifikan dibandingkan dengan
pencarian berurutan, terutama ketika himpunan data sudah terurut. Sementara
pencarian berurutan memerlukan waktu linear (O(n)), pencarian biner mampu
mempersempit ruang pencarian dengan cepat, menghasilkan kecepatan pencarian
yang lebih tinggi.

H. Kekurangan Dan Kelebihan Binary Search


A.Kelebihan
1. Efisiensi Waktu yang Tinggi
Binary search memiliki kompleksitas waktu O(log n), di mana n adalah jumlah elemen dalam
himpunan data. Hal ini berarti binary search dapat menemukan elemen yang dicari dengan
cepat bahkan pada himpunan data yang sangat besar. Dibandingkan dengan metode pencarian
linier yang memiliki kompleksitas waktu O(n), binary search jauh lebih efisien.

2. Penerapan yang Fleksibel


Binary search dapat diterapkan pada berbagai jenis himpunan data terurut, seperti array atau
daftar yang diindeks. Ini membuatnya dapat digunakan dalam berbagai konteks dan aplikasi,
termasuk pemrograman komputer, ilmu data, dan bioinformatika.

14
3. Keunikan Dalam Pencarian Elemen Tertentu
Binary search dapat memberikan hasil yang unik dalam mencari elemen tertentu. Jika elemen
yang dicari ada dalam himpunan data, binary search akan menemukannya dengan pasti. Jika
elemen tersebut tidak ada, binary search akan memberikan hasil yang menunjukkan bahwa
elemen tidak ditemukan.

4. Sederhana dan Mudah Diimplementasikan


Konsep dasar binary search relatif sederhana, dan algoritma ini mudah diimplementasikan
dalam berbagai bahasa pemrograman. Langkah-langkahnya yang terstruktur memudahkan
pemahaman dan penggunaan binary search dalam pengembangan perangkat lunak.

5. Meminimalkan Jumlah Perbandingan


Binary search membagi himpunan data menjadi dua bagian pada setiap langkahnya, sehingga
meminimalkan jumlah perbandingan yang perlu dilakukan. Ini mengurangi waktu eksekusi
dan mempercepat proses pencarian.

B. Kekurangan
1. Hanya Berlaku untuk Himpunan Data Terurut
Binary search hanya dapat digunakan untuk mencari elemen dalam himpunan data yang
sudah terurut. Jika himpunan data tidak terurut, langkah-langkah binary search tidak akan
berfungsi dengan benar dan menghasilkan hasil yang salah.

2. Memerlukan Pengurutan Awal


Sebelum menggunakan binary search, himpunan data harus diurutkan terlebih dahulu.
Pengurutan ini membutuhkan waktu dan sumber daya tambahan. Jika himpunan data sering
berubah atau update secara dinamis, maka pengurutan ulang yang sering juga diperlukan,
yang dapat mempengaruhi efisiensi algoritma.

15
3. Membutuhkan Ruang Tambahan
Selain himpunan data itu sendiri, binary search membutuhkan variabel tambahan untuk
menyimpan batas awal dan batas akhir. Ini membutuhkan alokasi ruang tambahan dalam
memori yang harus diperhatikan terutama saat berurusan dengan himpunan data besar.

4. Tidak Cocok untuk Pencarian Linier


Jika pencarian yang dilakukan cenderung linier atau tidak terdapat pola tertentu dalam
himpunan data, maka binary search mungkin tidak menjadi pilihan yang tepat. Algoritma ini
lebih efektif saat digunakan dalam pencarian pada himpunan data yang terurut dengan pola
yang teratur.

5. Tidak Menangani Duplikat dengan Baik


Jika terdapat duplikat dalam himpunan data, binary search hanya akan mengembalikan salah
satu kemungkinan posisi elemen yang sama. Ini berarti binary search tidak memberikan
solusi yang lengkap jika ada kebutuhan untuk menemukan semua kemunculan elemen yang
sama.

https://dosenit.com/ilmu-komputer/binary-search

I. SOAL
1. Bayangkan Anda mencari buku di perpustakaan yang bukunya diatur secara alfabetis
berdasarkan judul. Daripada mencari satu per satu, Anda dapat menggunakan binary
search. Misalnya, jika buku yang Anda cari dimulai dengan huruf 'M', Anda tahu
bahwa Anda tidak perlu mencari di bagian buku yang dimulai dengan huruf 'A' hingga
'L'. Anda dapat langsung fokus pada bagian yang berisi buku dengan judul yang
dimulai dengan 'M' hingga 'Z'.
2. Pada daftar kontak ponsel, kontak biasanya diatur berdasarkan urutan abjad. Jika
Anda mencari seseorang dengan nama tengah di antara 'M' dan 'Z', Anda dapat
menggunakan binary search untuk mempersempit daftar pencarian Anda.

Jawaban:
1. Sebagai berikut
def binary_search_books(book_list, target_book):

16
low = 0
high = len(book_list) - 1

while low <= high:


mid = (low + high) // 2
guess = book_list[mid]

if guess == target_book:
return f"Buku {target_book} ditemukan di indeks {mid}."
elif guess < target_book:
low = mid + 1
else:
high = mid - 1

return f"Buku {target_book} tidak ditemukan di dalam daftar."

# daftar buku yang diurutkan secara alfabetis


book_list = ['Alice in Wonderland', 'Harry Potter', 'Lord of the Rings', 'The Great
Gatsby', 'To Kill a Mockingbird']

# pencarian buku "Lord of the Rings"


target_book = 'Lord of the Rings'
result = binary_search_books(book_list, target_book)

print(result)

Hasiil:

Penjelasan:

17
1. Fungsi binary_search_books mengambil dua parameter: book_list (daftar buku
yang diurutkan) dan target_book (buku yang dicari).
2. Algoritma binary search diimplementasikan dengan menggunakan variabel low
dan high untuk menyimpan batas pencarian.
3. Loop while akan terus berjalan selama low tidak melebihi high.
4. Di setiap iterasi, nilai tengah (mid) dari rentang pencarian dihitung, dan buku pada
indeks mid dibandingkan dengan buku yang dicari (target_book).
5. Jika buku yang dicari ditemukan, fungsi mengembalikan pesan dengan indeks di
mana buku tersebut ditemukan.
6. Jika buku yang dicari lebih besar dari tebakan, pencarian dilanjutkan di setengah
kanan. Jika lebih kecil, pencarian dilanjutkan di setengah kiri.
7. Jika loop selesai dan buku tidak ditemukan, fungsi mengembalikan pesan bahwa
buku tidak ditemukan di dalam daftar.

2. Sebagai berikut
def binary_search_contacts(contact_list, target_contact):
low = 0
high = len(contact_list) - 1

while low <= high:


mid = (low + high) // 2
guess = contact_list[mid]

if guess == target_contact:
return f"Kontak {target_contact} ditemukan di indeks {mid}."
elif guess < target_contact:
low = mid + 1
else:
high = mid - 1

return f"Kontak {target_contact} tidak ditemukan di dalam daftar."

# daftar kontak yang diurutkan berdasarkan abjad


contact_list = ['Anna', 'John', 'Mary', 'Robert', 'Susan']

18
# pencarian kontak "Mary"
target_contact = 'Mary'
result = binary_search_contacts(contact_list, target_contact)

print(result)

Hasil:

Penjelasan:
1. Fungsi binary_search_contacts mengambil dua parameter: contact_list
(daftar kontak yang diurutkan) dan target_contact (kontak yang dicari).
2. Algoritma binary search diimplementasikan dengan menggunakan variabel
low dan high untuk menyimpan batas pencarian.
3. Loop while akan terus berjalan selama low tidak melebihi high.
4. Di setiap iterasi, nilai tengah (mid) dari rentang pencarian dihitung, dan
kontak pada indeks mid dibandingkan dengan kontak yang dicari
(target_contact).
5. Jika kontak yang dicari ditemukan, fungsi mengembalikan pesan dengan
indeks di mana kontak tersebut ditemukan.
6. Jika kontak yang dicari lebih besar dari tebakan, pencarian dilanjutkan di
setengah kanan. Jika lebih kecil, pencarian dilanjutkan di setengah kiri.
7. Jika loop selesai dan kontak tidak ditemukan, fungsi mengembalikan pesan
bahwa kontak tidak ditemukan di dalam daftar.

19
BAB 3
PENUTUP

Kesimpulan
Kesimpulan yang dapat ditarik dari makalah binary search ini yaitu Algoritma pencarian
biner digunakan untuk mencari data pada sekumpulan data atau rekaman yang sudah dalam
keadaan terurut.
Selain itu kita dapat mempermudah pekerjaan manusia dalam bidang Informasi,
mempermudah dalam bidang Statistik, mempermudah pekerjaan manusia dalam bidang
komputerisasi lainya terutama dalam bidang pencarian data.
Dengan binary search ini kita dapat mempermudah pekerjaan manusia di dalam hal mencari
sebuah data. Sehingga dapat menciptakan suatu progam yang bermanfaat dan memiliki nilai
ekonomi.

20
Saran
- Teliti dalam menghitung binary code
- Teliti dalam menghitung nilai tengah dari binary code
- Dan yang terpenting adalah teliti dalam memasukan bahasa pemograman pada saat
mengcompile(ngoding).

DAFTAR PUSTAKA

http://diankuusuma.blogspot.com/2012/01/v-behaviorurldefaultvmlo.html
http://ekawirawanptn.blogspot.com/2010/05/algoritma-binary-search.html
http://kabehatake.blogspot.com/2010/05/algoritma-binary-search.html
http://aloen-pop.blogspot.com/2009/06/binary-searching.html
Cormen, T. H. (2013). "Algorithms Unlocked." , hal, 584-65
Robert Sedgewick “Algoritm”, hal, 484-585.
http://en.wikipedia.org/wiki/Binary_search

21

Anda mungkin juga menyukai