ā” Algoritma & Kompleksitas
Level: Advanced
Algoritma adalah langkah-langkah logis untuk menyelesaikan masalah.
Kompleksitas mengukur seberapa efisien algoritma berjalan, baik dari sisi waktu maupun memori.
Bayangkan seperti rute perjalanan: ada jalan cepat, ada jalan macet, ada jalan memutar.
š Konsep Utama
- Kompleksitas Waktu: berapa banyak langkah yang dibutuhkan algoritma (notasi Big-O).
- Kompleksitas Ruang: berapa banyak memori yang digunakan.
- Notasi Big-O: cara standar untuk menuliskan efisiensi algoritma, misalnya:
O(1) ā konstan
O(n) ā linear
O(n²) ā kuadratik
O(log n) ā logaritmik
š ļø Praktik Kecil
# O(1) - konstan
def akses_elemen(lst):
return lst[0]
# O(n) - linear
def jumlah_elemen(lst):
total = 0
for x in lst:
total += x
return total
# O(n^2) - kuadratik
def pasangan(lst):
for i in lst:
for j in lst:
print(i, j)
š Perhatikan perbedaan: akses_elemen selalu cepat,
jumlah_elemen butuh waktu sesuai panjang list,
pasangan butuh waktu jauh lebih lama karena perulangan bersarang.
š® Mini Challenge
Buat dua fungsi pencarian:
- Linear Search: cek satu per satu elemen dalam list.
- Binary Search: cari di list yang sudah terurut dengan membagi dua.
Tugas: Bandingkan kompleksitas keduanya (O(n) vs O(log n)) dengan mencoba list berisi 1.000, 10.000, dan 100.000 elemen.