Anda di halaman 1dari 39

Algoritma dan Pemrograman

Pertemuan 6 : Binary Search


Download soal di temporary sesuaikan kode ganjil dan
genap dengan nomer kompi masing-masing.

Upload PAP-nya nanti setelah Pemahaman yaa~ :D


Login Webmaster
Upload PAP 6
Di Pertemuan 6

Semua Projek Tugas jadikan 1 RAR


Format file = A1116xxxxx.rar
Chapter 1 : Intro Binary Search
Konsep Dasar Dari Binary Search
 Array harus sudah terurut.
 Pencarian dilakukan dengan membandingkan Kunci dengan nilai array pada indeks ke
Midle(tengah) dengan rumus (LEFT + RIGHT) / 2.
 Apabila nilai kunci lebih besar dari nilai array indeks ke-middle, maka pencarian dilakukan pada
array sebelah KANAN dengan mengubah nilai indeks Left = Midle + 1.
 Apabila nilai kunci lebih kecil dari nilai array indeks ke-middle, maka pencarian dilakukan pada
array sebelah KIRI dengan mengubah nilai indeks Right = Midle – 1.
Chapter 2 : Algoritma Binary Search
Algoritma Binary Search
 Selama nilai LEFT kurang dari sama dengan RIGHT, maka
lakukan

 Cari nilai Middle dengan rumus (LEFT + RIGHT) / 2

 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

 Selain itu maka pencarian dilakukan pada array sebelah KIRI,


dengan mengubah nilai RIGHT = MIDLE – 1, karena Kunci yang
dicari lebih kecil dari nilai array pada indeks ke middle

 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

LEFT = 0 MIDLE = ?? RIGHT = 9

Berapakah INDEKS Middlenya ?


 MIDLE = (LEFT + RIGHT)/2
 MIDLE = (0 + 9)/2
 MIDLE = 4
Pretest - 2

4 5 7 8 9 10 11
3 4 5 6 7 8 9

LEFT = 5 RIGHT = 8
MIDLE = ??

Berapakah INDEKS Middlenya ?


 MIDLE = (LEFT + RIGHT)/2
 MIDLE = (5 + 8)/2
 MIDLE = 6
Pretest - 3

7 8
5 6

LEFT = 5 RIGHT = 6
MIDLE = ??

Berapakah INDEKS Middlenya ?


 MIDLE = (LEFT + RIGHT)/2
 MIDLE = (5 + 6)/2
 MIDLE = 5
Chapter 3 : Ilustrasi Sederhana Binary Search
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 MIDLE = 4 RIGHT = 9

Jika nilai Kunci lebih besar dari nilai data pada


indeks Middle, maka cari array bagian Kanan
Posisikan Left pada (Midle + 1)
ILUSTRASI PART - 2 (NILAI KUNCI = 7)

7 8 9 10 11
5 6 7 8 9

LEFT = 5 MIDLE = 7
RIGHT = 9

Jika nilai Kunci lebih kecil dari nilai data pada


indeks Middle, maka cari array bagian Kiri
Posisikan Right pada (Midle - 1)
ILUSTRASI PART - 3 (NILAI KUNCI = 7)

7 8
5 6
MIDLE = 5 RIGHT = 6
LEFT = 5

Nilai dari array pada indeks ke Middle sudah sama


dengan Kunci, maka pencarian dihentikan
Chapter 4 : Step by Step Binary Search - 1
ILUSTRASI PART - 1 (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 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

LEFT = 0 MIDLE = 4 RIGHT = 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

LEFT = 0 MIDLE = 4 RIGHT = 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

LEFT = 5 MIDLE = 7 RIGHT = 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

LEFT = 0 MIDLE = 4 RIGHT = 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

LEFT = 0 MIDLE = 4 RIGHT = 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

LEFT = 5 MIDLE = 7 RIGHT = 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

LEFT = 5 MIDLE = 7 RIGHT = 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

LEFT = 5 MIDLE = 7 RIGHT = 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

LEFT = 5 MIDLE = 7 RIGHT = 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

Anda mungkin juga menyukai