Analisis Algoritma Binary Search

Analisis Algoritma ​Binary Search

Alif Azhar​1​,Fadhil Mulia Abdilah​2​,Reza Agung Pambudi​3






Jurusan Teknik Informatika Universitas Telkom, Jalan Telekomunikasi No. 1, Sukapura, Bojongsoang,
Bandung, Jawa Barat 40257
2​
1​
email : ​ alifazharf@gmail.com, ​ fadhilabdillah88@gmail.com,​3​rezaagungpambudi@gmail.com
makalah ini akan dibandingkan tentang
​ serarch dengan l​inear

search.
performa ​binary
Abstrak - Dalam ilmu komputer, algoritma
pencarian secara luas diartikan sebagai
sebuah algoritma yang menerima masukan
berupa sebuah masalah dan menghasilkan
kemudian mencari setengah sisanya dengan
sebuah solusi untuk masalah tersebut, yang
cara yang sama.
biasanya didapat dari evaluasi beberapa
2.METODE
kemungkinan solusi. Salah satu contoh
Algoritma ​divide and conquer adalah strategi
algoritma
pencarian
yang memiliki
pemecahan masalah yang besar dengan cara
kompleksitas cukup baik adalah ​binary
melakukan pembagian masalah yang besar
search.​Binary search merupakan algoritma
pencarian
data
terurut
yang
tersebut menjadi beberapa bagian yang lebih
mengimplementasikan metode ​divide and
kecil secara rekursif hingga masalah tersebut
conquer, dimana data yang terurut tersebut
dapat dipecahkan secara langsung. Penerapan
algoritma tersebut dapat memudahkan dalam
akan dibagi menjadi dua bagian. Dalam
permasalahan yang memiliki jumlah data yang
melakukan pencariannya teknik binary
besar​.
search
mempertimbangkan
empat
kemungkinan yaitu
2.1. ​Kompleksitas algoritma Binary
1. jika elemen yang dicari langsung

Search​ dengan Sequential Search
ditemukan maka ​binary search akan
A. Analisis pencarian ​Binary Search
dihentikan
berikut ini adalah algoritma dari binary
2. jika elemen yang dicari kurang dari
search dengan menggunakan interasi
nilai
element
tengahnya
maka
Kamus
pencarian hanya akan dilakukan pada
Conts N : Type t=array[0 … N] of integer
sisi kiri saja
val, left, right, mid : Integer
3. jika element yang dicari lebih dari nilai
Algoritma
element tengahnya maka pencarian
int binarySearch(LIST t[], int n, int val) {
hanya akan dilakukan pada sisi
int left, right, mid; left = 0;
kanannya saja.
right = n-1;
4. jika element yang dicari tidak
while(left<=right) {
ditemukan maka maka boolean hasi
mid=(left+right)/2;
akan memberikan nilai ​false.

if (val < t[mid].key)
left=mid+1;
Kata kunci : ​binary search, algoritma
else
pencarian
return mid; /* ditemukan */
1.PENDAHULUAN
}
Algoritma pencarian biner (Binary search)
return -1; /* tidak ditemukan*/
adalah sebuah teknik yang mengaplikasikan
}
metode ​Divide and Conquer untuk menemukan
Dengan mengamati algoritma tersebut kita
nilai tertentu dalam sebuah array yang sudah
bisa mendapatkan prforma algoritma ​binary
terurut dengan mengabaikan setengah data
search sebagai berikut

pada setiap langkah. Sebuah pencarian biner
● Best case algoritma ​binary search adalah
mencari nilai tengah (median), melakukan
ketika element yang dicari tepat berada
pembandingan untuk menentukan apakah nilai
pada ditengah larik tersebut sehingga kita
yang dicari ada sebelum atau sesudahnya.Pada



bisa mengmbil kesimpulan ​best case nya
sebagai berikut
○ T(n) = T(1)
sehingga ​big O notasinya untuk ​best case
adalah O(1)
Average case algoritma ​binary search
adalah
O(log n) berikut ini penjelasannya

misalkan kita mempunyai array dengan
panjang delapan dan ketika binary search
dijalankan prosesya adalah seperti ini
➔ ketika n = 10 binary search akan
mereduksi ukuran menjadi 5
➔ ketika n = 5 binary search akan
mereduksi ukuran menjadi 2
➔ ketika n = 2 binary search akan
​ mereduksi ukuran menjadi 1
Secara matematis dapat dituliskan sebagai
berikut.
T(n) = T( n2 ) +1
T( n2 ) = T( n4 ) +1 +1...T( 2nk )+1+1+1...+1
k

T(n) = T( 22k ) +1 +1+1 hingga k
T(n) = T(1) + k ​

misalkan kita mengambil 2​k​ = n
k = log n
sehingga kita memperoleh ​average
kompleksitas algoritma ​binary search
adalah O(log n)
● Berdasrkan algoritma diatas jika nilai
yang dicari tidak ditemukan maka binary

search
akan terus berjalan hingga nilai
rightnya kurang dari nilai leftnya,
sehingga algoritma binary search bisa kita
​ ambil kesimpulan ​worst casenya adalah
O(log n).
B. Analisis pencarian ​Linear Search
(Brute Force)
Linear search adalah algoritma pencarian
yang bersifat ​brute force dimana algoritma ini
akan mencari dari depan kebelakang dengan
membandingkan nilai yang dicari jika nilai
yang dicari ditemukan maka algoritama ini
akan berhenti. Berikut ini adalah algoritmanya
Kamus
Conts N : Type t=array[0 … N] of integer
i : Integer
Algoritma
int linearSearch (LIST t[], int n, int val) {
for i = 0 to n do{
if(t[i] = val)
return i
}

return -1; /* tidak ditemukan*/
}

Dengan mengamati algoritma tersebut kita
bisa mendapatkan prforma algoritma ​binary
search sebagai berikut
● Best case pada algoritma linear search
adalah ketika elemnt yang dicari berada
pada awal larik sehingga ehingga kita bisa
mengmbil kesimpulan ​best case nya
sebagai berikut
○ T(n) = 1
sehingga ​big O notasinya untuk ​best case
adalah O(1)
● Average case untuk algoritma ​linear
search adalah O(n) berikut ini adalah
penjelasaannya secara matematis
T(n) = 1+2+3+...+ nn
T(n) = (n+1)
2
Sehingga dapat disimpulkan kompleksitas
dari Algoritma ​Sequential Search adalah
O(n)
● Berdasarkan agoritma diatas jika nilai
yang dicari tidak ditemukan maka
lagoritma ini harus mennelusuri semua
element yang ada sepanjang panjang larik
tersebut sehingga algoritma sehingga
algoritma ​linear search bisa kita ambil
kesimpulan ​worst casenya adalah O(n)
Analisis performa ​Binary Search
dengan ​Linear Search (Brute Force)
Dengan meihat meihat hasi averga case
anta linear search dengan kompleksitasnya
adalah O(n) dengan binary search yang
kompleksitasnya dalah O(log n) kita bisa
membuat grafik perbandingan performa seperti
dibawah ini
C.

Dengan begitu kita bisa mengetahu bahwa
performa binary search memiliki performa

pencarian lebih baik dibanding dengan linear
search.

2.2. ​Korelasi/kesesuaian

kompleksitas
algoritma terhadap running time (saat
program dieksekusi).
Untuk mendapatkan hasil yang mengukur
kesesuaian kami menggunakan set data
sebanyak 15,000,000 dan kami meletakkan
data yang akan di cari pada bagian paling
belakang,bagian paling depan dan bagian
tengah.
Running Time Sequential Search (Data
Awal - Tengah - Belakang)

Running Time Binary Search (Data Awal Tengah - Belakang)

Dari tabel diatas, maka algoritma dengan
binary search menemukan hasil optimal pada saat
pencarian data di posisi tengah dan di akhir,
sedangkan algoritma ​linear search menemukan
hasil optimal pada saat pencarian data di posisi
awal.

3. KESIMPULAN

Disini kita bisa lihat bahwa waktu running time
dari ​Binary Search lebih cepat dibandingkan
linearSearch ini membuktikan bahwa benar
kompleksitas Binary Search yaitu O(log n) < dari
pada kompleksitas ​Linear Search yaitu O(n)
dengan bukti seperti diatas
Note : Running time kemungkinan meleset 0 - 1
s karena pengguna memory yang berganti

2.3 Analisis optimalitas
Berdasarkan running time program saat
dieksekusi, maka didapatkan data sebagai berikut:
Posisi data yang dicari
Awal

Tengah

akhir

Binary-S
earch

30 s

29,8 s

29,2 s

Linear
Search

29,7 s

30,6 s

31,3 s

Algoritama ​binary search memiliki kompleksitas
lebih baik dibanding dengan ​linear search sihingga
performa ​binary search lebih baik dibanding ​linear
search. Pada ​binary search hanya akan mencari
satu salah satu sisi saja jika nilai tengahya sudah
ditemukan.
Namun ada kondisi dimana
masing-masing algoritma ini memiliki kelebihan
● jika data yang dicari pada awal element
maka ​linear Search akan lebih dahulu
menemukan hasil yang dicari dibanding
dengan ​binary search.
● jika data yang dicari tepat berada pada
saat element itu dibagi dua pada binary
search maka ​binary search lebih dahulu
menemukan dibanding dengan ​linear
Search.
Daftar Pustaka
1. wikipedia. (2015) . ​Pencarian biner.
Dipetik Desember 4, 2016 .dari
https://id.wikipedia.org/wiki/Pencarian_bi
ner
2. University
of
Alberta.
​Structural
Programming and data structure. Dipetik
Desember
4,
2016.dari
https://webdocs.cs.ualberta.ca/~zaiane/cou
rses/cmput102/slides/Topic13/sld017.htm
3. Stack Exchange.(2014).​Proving that the
average case complexity of binary search
is O(log n). DIpetik Desember 4, 2016.
Dari
https://cs.stackexchange.com/questions/32
090/proving-that-the-average-case-comple
xity-of-binary-search-is-olog-n
4. StackOverflow. (2012) . ​Binary search
algorithm in python. Dipetik Desember 4,
2016.Dari
http://stackoverflow.com/questions/95013
37/binary-search-algorithm-in-python
5. University Of Houston. ​Average Case
Analysis of Binary Search. Dipetik
Desember
4,
2016
dari
http://sce.uhcl.edu/yang/teaching/csci3333

6.

7.

8.

spring2011/Average%20case%20analysis
%20of%20binary%20search.pdf
Stoimen. (2012) .​Computer Algorithms:
Balanceing Binary Search Tree. Dipetik
Desember
4,
2016.
dari
http://www.stoimen.com/blog/2012/07/03/
computer-algorithms-balancing-a-binary-s
earch-tree/.
wikipedia. (2016) . ​LInear Search. Dipetik
Desember
4,
2016
.dari
https://en.wikipedia.org/wiki/Linear_searc
h
StackOverflow. (2016) . ​How to calculate
binary search complexcity. Dipetik
Desember
4,
2016.Dari
http://stackoverflow.com/questions/81850
79/how-to-calculate-binary-search-comple
xity

Dokumen yang terkait

Dokumen baru