K
Python · modul 13/14
93%

Modul 13: Algoritma & Struktur Data

Mahir~90 menit

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))  # 3
Output:
3

Sorting: 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))  # 120
Output:
120

Big-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.

💡 Praktek terbaik dari repo TheAlgorithms/Python (MIT): baca kodenya → jalankan → tutup layar → tulis ulang dari ingatan. Bandingkan. Ulangi untuk 5 algoritma inti: binary search, bubble sort, merge sort, faktorial rekursif, two-sum.

2 · Video

Tonton 1 video inti dari kurasi pencarian ini (gratis, di YouTube):

▶ Tonton Video Pilihan

Praktek — 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 terjawab
  1. 1. Syarat binary search bisa dipakai adalah…

  2. 2. Kompleksitas binary search adalah…

  3. 3. Bagian wajib dari fungsi rekursif adalah…