Modul 13: Algoritma & Struktur Data
Yang akan kamu kuasai
- Sorting: mengerti & mengimplementasikan
- Binary search & pola dua pointer
- Rekursi & membaca Big-O
1 · Teori (~5–10 mnt baca)
Algoritma = resep langkah penyelesaian masalah. Contoh klasik: linear search memeriksa satu per satu (O(n)), sedangkan binary search membelah data terurut menjadi dua setiap langkah (O(log n)) — 1 juta data cukup ±20 langkah!
def binary_search(arr, target):
lo, hi = 0, len(arr) - 1
while lo <= hi:
mid = (lo + hi) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
lo = mid + 1
else:
hi = mid - 1
return -1
print(binary_search([1, 3, 5, 7, 9], 7)) # 3Output:
3Sorting: Python punya sorted() (Timsort, O(n log n)) — tapi memahami bubble/selection/merge sort melatih logika. Rekursi adalah fungsi yang memanggil dirinya dengan masalah yang makin kecil, plus base case pemberhenti.
def faktorial(n):
if n <= 1: # base case
return 1
return n * faktorial(n - 1) # memanggil diri
print(faktorial(5)) # 120Output:
120Big-O mengukur pertumbuhan waktu saat data membesar: O(1) konstan, O(log n) membelah, O(n) linear, O(n log n) sorting efisien, O(n²) kuadrat (hindari untuk data besar). Memilih struktur data yang tepat (dict untuk lookup O(1) vs list O(n)) sering lebih berpengaruh daripada optimasi mikro.
2 · Video
Tonton 1 video inti dari kurasi pencarian ini (gratis, di YouTube):
▶ Tonton Video PilihanPraktek — Editor Python di Browser
Implementasikan binary_search(arr, target) pada list TERURUT — kembalikan indeks jika ditemukan, -1 jika tidak. Template sudah ada di teori; tulis dari ingatanmu.
Petunjuk
mid = (lo + hi) // 2 → bandingkan, geser lo/hi
⚠️ Hindari while True: tanpa break — Python berjalan di tab browser; loop tak berujung bisa membekukan halaman (refresh untuk reset). Perangkat lemah atau kuota kecil? Praktek ini juga bisa dikerjakan di Google Colab ↗.
Kuis
0/3 terjawab1. Syarat binary search bisa dipakai adalah…
2. Kompleksitas binary search adalah…
3. Bagian wajib dari fungsi rekursif adalah…