Jika nilai array pada indeks ke Midle sama dengan Kunci , maka
data ketemu, dan pencarian dihentikan , kembalikan nilai indeks
midlenya.
Selain itu jika nilai Kunci yang dicari lebih besar dari nilai array
pada indeks ke middle, maka pencarian dilakukan pada array
sebelah KANAN, dengan mengubah nilai LEFT = MIDLE + 1
Return -1 dilakukan apabila data/Kunci yang dicari tidak ada dalam array , atau data tidak ditemukan.
Pretest - 1
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
4 5 7 8 9 10 11
3 4 5 6 7 8 9
LEFT = 5 RIGHT = 8
MIDLE = ??
7 8
5 6
LEFT = 5 RIGHT = 6
MIDLE = ??
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
7 8 9 10 11
5 6 7 8 9
LEFT = 5 MIDLE = 7
RIGHT = 9
7 8
5 6
MIDLE = 5 RIGHT = 6
LEFT = 5
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 0 RIGHT = 9
MIDLE = ??
PROSES
LEFT =0
RIGHT =9
----------------------------------
LEFT <= RIGHT ?
0 <= 9 (TRUE)
ILUSTRASI PART - 2 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
MIDLE = (LEFT + RIGHT) / 2
MIDLE = (0 + 9) / 2
MIDLE = 4
ILUSTRASI PART - 3 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
Data[MIDLE] = 5
KEY = 10
--------------------------------------
Data[MIDLE] = KEY ?
5 = 10 (FALSE)
ILUSTRASI PART - 3 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 0
MIDLE = 4 RIGHT = 9
PROSES
Data[MIDLE] = 5
KEY = 10
--------------------------------------
Data[MIDLE] < KEY ?
5 < 10 (TRUE)
ILUSTRASI PART - 3 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 5
MIDLE = 4 RIGHT = 9
PROSES
Data[MIDLE] = 5
KEY = 10
--------------------------------------
Data[MIDLE] < KEY ?
5 < 10 (TRUE)
LEFT = MIDLE + 1
LEFT = 4 + 1
LEFT = 5
ILUSTRASI PART - 4 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
• MIDLE = (LEFT + RIGHT) / 2
• MIDLE = (5 + 9) / 2
• MIDLE = 7
ILUSTRASI PART - 5 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 5
MIDLE = 7 RIGHT = 9
PROSES
Data[MIDLE] = 9
KEY = 10
--------------------------------------
Data[MIDLE] = KEY
9 = 10 (FALSE)
ILUSTRASI PART - 5 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 5
MIDLE = 7 RIGHT = 9
PROSES
Data[MIDLE] = 9
KEY = 10
--------------------------------------
Data[MIDLE] < KEY
9 < 10 (TRUE)
ILUSTRASI PART - 5 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 8
MIDLE = 7 RIGHT = 9
PROSES
Data[MIDLE] = 9
KEY = 10
--------------------------------------
Data[MIDLE] < KEY
9 < 10 (TRUE)
LEFT = MIDLE + 1
LEFT = 7 + 1
LEFT = 8
ILUSTRASI PART - 6 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
MIDLE = 8
LEFT = 8 RIGHT = 9
PROSES
• MIDLE = (LEFT + RIGHT) / 2
• MIDLE = (8 + 9) / 2
• MIDLE = 8
ILUSTRASI PART - 7 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
MIDLE = 8
LEFT = 8 RIGHT = 9
PROSES
Data[MIDLE] = 10
KEY = 10
--------------------------------------
Data[MIDLE] = KEY ?
10 = 10 (TRUE)
Return MIDLE
Return 8
End While
Chapter 5 : Step by Step Binary Search - 2
ILUSTRASI PART - 1 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 0 RIGHT = 9
MIDLE = ??
PROSES
LEFT =0
RIGHT =9
----------------------------------
LEFT <= RIGHT ?
0 <= 9 (TRUE)
ILUSTRASI PART - 2 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
MIDLE = (LEFT + RIGHT) / 2
MIDLE = (0 + 9) / 2
MIDLE = 4
ILUSTRASI PART - 3 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
Data[MIDLE] = 5
KEY =7
--------------------------------------
Data[MIDLE] = KEY ?
5 = 7 (FALSE)
ILUSTRASI PART - 4 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 0
MIDLE = 4 RIGHT = 9
PROSES
Data[MIDLE] = 5
KEY =7
--------------------------------------
Data[MIDLE] < KEY ?
5 < 7 (TRUE)
ILUSTRASI PART - 5 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
LEFT = 5
MIDLE = 4 RIGHT = 9
PROSES
Data[MIDLE] = 5
KEY =7
--------------------------------------
Data[MIDLE] < KEY ?
5 < 7 (TRUE)
LEFT = MIDLE + 1
LEFT = 4 + 1
LEFT = 5
ILUSTRASI PART - 6 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
• MIDLE = (LEFT + RIGHT) / 2
• MIDLE = (5 + 9) / 2
• MIDLE = 7
ILUSTRASI PART - 7 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
Data[MIDLE] = 9
KEY =7
--------------------------------------
Data[MIDLE] = KEY ?
9 = 7 (FALSE)
ILUSTRASI PART - 8 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
Data[MIDLE] = 9
KEY =7
--------------------------------------
Data[MIDLE] < KEY ?
9 < 7 (FALSE)
ILUSTRASI PART - 9 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
PROSES
Data[MIDLE] = 9
KEY =7
--------------------------------------
Data[MIDLE] > KEY
9 > 7 (TRUE)
ILUSTRASI PART - 10 (NILAI KUNCI = 7)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
RIGHT = 6
LEFT = 5
MIDLE = 7
PROSES
Data[MIDLE] = 9
KEY =7
--------------------------------------
Data[MIDLE] > KEY
9 > 7 (TRUE)
RIGHT = MIDLE - 1
RIGHT = 7 - 1
RIGHT = 6
ILUSTRASI PART - 11 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
MIDLE = 5
RIGHT = 6
LEFT = 5
PROSES
• MIDLE = (LEFT + RIGHT) / 2
• MIDLE = (5 + 6) / 2
• MIDLE = 5
ILUSTRASI PART - 12 (NILAI KUNCI = 10)
1 2 4 4 5 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9
MIDLE = 5
RIGHT = 6
LEFT = 5
PROSES
Data[MIDLE] = 7
KEY =7
--------------------------------------
Data[MIDLE] = KEY ?
7 = 7 (TRUE)
Return MIDLE
Return 5
End While
Terima Kasih