Anda di halaman 1dari 12

BINARY SEARCH

ALGORITMA II
fahrobby.a

Binary Search

Binary search merupakan salah satu


metode untuk melakukan pencarian
pada array yang sudah terurut.
Keunggulan dari proses binary search ini
adalah sistem pencariannya yang relatif
cepat dan efisien walaupun ada banyak
data sekalipun. Karena data dicari dari
depan, tengah dan belakang. Tetapi
sintaks dan algoritmanya sedikit lebih
rumit, karena kita harus mengurutkan
data terlebih dahulu.

Analogi

Data = {1,3,5,7,9,11,15,19}

Kasus 1, cari X = 7

Tentukan batas:

Left = 0, Right = 7

1
1

1
5

1
9

Left <= Right

Loop 1: mid = (left+right) div 2


mid = (0+7) div 2 = 3
0

1
1

1
5

1
9

lef
t

Data[mid] = X ?
Data[3] = 7

mi
d

righ
t

Analogi(2)

Kasus 2, cari X = 9

Left = 0, Right = 7

Left <= Right

Loop 1: mid = (left+right) div 2


mid = (0+7) div 2 = 3
0

1
1

1
5

1
9

lef
t

Data[mid] = X ?

mi
d

righ
t

7 < 9, sehingga left = mid+1 (left = 3+1=4)

Analogi(3)

Left = 4, Right = 7

Left <= Right

Loop 2: mid = (left+right) div 2


mid = (4+7) div 2 = 5
0

1
1

1
5

1
9

lef
t

mi
d

Data[mid] = X ?

righ
t

11 > 9, sehingga right = mid-1 (right = 5-1=4)

Analogi(4)

Left = 4, Right = 4

Left <= Right

Loop 3: mid = (left+right) div 2


mid = (4+4) div 2 = 4
1

1
1

1
5

1
9

Data[mid] = X ?

rig

lef
mi
t
d

t h

9 = 9, jadi data ditemukan pada looping ke-3

Analogi(5)

Kasus 3, cari X = 2

Left = 0, Right = 7

Left <= Right

Loop 1: mid = (left+right) div 2


mid = (0+7) div 2 = 3
0

1
1

1
5

1
9

lef
t

Data[mid] = X ?

mi
d

righ
t

7 > 2, sehingga right = mid-1 (left = 3-1=2)

Analogi(6)

Left = 0, Right = 2

Left <= Right

Loop 2: mid = (left+right) div 2


mid = (0+2) div 2 = 1
0

1
1

1
5

1
9

lef
t

mi
d

righ
t

Data[mid] = X ?

3 > 2, sehingga right = mid-1 (right = 1-1=0)

Analogi(7)

Left = 0, Right = 0

Left <= Right

Loop 3: mid = (left+right) div 2


mid = (0+0) div 2 = 0
1

1
1

1
5

1
9

rig

lef
mi
t
d

t h

Data[mid] = X ?

1 < 2, sehingga left = mid+1 (left = 0+1=1)

Loop 4: Left = 1, Right = 0 ? Hal ini tidak memenuhi sarat


(left<=right) sehingga pencarian berhenti, data tidak ditemukan
dan loop berhenti di loop ke-3.

Flow Chart
A

START

mid =
(left+right) / 2

int
data[]={1,2,3}
int left, mid,
right, x
angka yg dicari
(x)

data[mid]=
=x

left = 0
right =
data.length-1

data
ditemukan

B
left<=rig
ht

N
data tidak
ditemukan

Y
B

END

data[mid]
<x

left =
mid+1

right = mid1
C

Contoh Program

Thank You