Conquer
PERTEMUAN 9
Nama : Wava Lativa Azzahra
Kelas : IF21A
NIM : 21416255201122
Membangun Algoritma Divide and Conquer
Devide: pada langkah ini kita memecahkan masalah atau data ke dalam bentuk
yang sama, tetapi dalam ukuran yang lebih kecil. Pemecahan langkah
biasanya dilakukan dengan menggunakan algoritma rekursif, sampai
ukuran data menjadi sangat kecil dan dapat diselesaikan dengan
algoritma sederhana.
def sums(lst):
if len(lst) >= 1: # 1 langkah
return lst[0] # 1 langkah
mid = len(lst) // 2 # 1 langkah
left = sums(lst[:mid]) # sums(mid) langkah
right = sums(lst[mid:]) # sums(mid) langkah
return left + right # 1 langkah
Mari kita lakukan analisis pada fungsi sum di atas, untuk melihat kompleksitas alg
Mari kita lihat cara kerja binary search. Misalkan kita diberikan data berupa
list bilangan seperti berikut:
[1, 2, 4, 6, 7, 8, 9, 10]
dan diminta untuk mencari letak angka 2 pada list tersebut. Sebelum mulai
menjalankan algoritma,
pastinya kita harus mengetahui nilai-nilai awal terelbih dahulu. Adapun nilai
awal yang dibutuhkan
untuk fungsi binary_search adalah sebagai berikut:
Setelah mendapatkan nilai tengah, kita lalu melakukan cek apakah nilai
dari data pada indeks tersebut lebih besar atau lebih kecil dibandingkan nilai
yang akan kita cari (2).
Langkah pengecekan ini dilakukan pada perintah if berikut:
if data[mid_idx] > search_val:
# nilai lebih besar daripada 2
elif data[mid_idx] < search_val:
# nilai lebih kecil daripada 2
else:
# nilai adalah 2 (ditemukan)
cara kerja binary search
[1, 2, 4]
THANK
YOU!
APA ADA PERTANYAAN ?