Algoritma adalah langkah-langkah terstruktur untuk menyelesaikan suatu masalah.
Analogi: Resep masakan adalah algoritma — langkah demi langkah untuk menghasilkan makanan.
Ciri-ciri algoritma yang baik:
- Input — menerima data
- Output — menghasilkan hasil
- Definiteness — setiap langkah jelas
- Finiteness — pasti berhenti
- Effectiveness — setiap langkah bisa dilakukan
Contoh: Mencari nilai terbesar
function findMax(arr) {
let max = arr[0]; // 1. Asumsi pertama = terbesar
for (let i = 1; i < arr.length; i++) {
if (arr[i] > max) { // 2. Bandingkan setiap elemen
max = arr[i]; // 3. Update jika lebih besar
}
}
return max; // 4. Kembalikan hasil
}
findMax([3, 7, 1, 9, 4]); // 9
Mengapa belajar algoritma?
- Menulis kode yang lebih cepat dan efisien
- Memecahkan masalah yang tampak mustahil
- Pertanyaan utama di technical interview
- Memahami bagaimana library/framework bekerja di balik layar
🎭 Analogi sehari-hari (selain resep):
- Petunjuk arah ke alamat — input alamat, output rute, langkah jelas
- Cara mengikat sepatu — urutan tetap, hasilnya pasti, ada awal dan akhir
- Algoritma cuci baju — masuk, deterjen, putar X menit, bilas, peras
Kalau ada input → langkah → output dan langkahnya bisa dilakuin orang lain dengan hasil sama, itu algoritma.
💡 Programmer pemula sering pikir "algoritma = pelajaran kuliah". Faktanya: setiap kali kamu nulis if, for, while, atau bahkan array.filter().map(), itu sudah algoritma. Bedanya cuma seberapa efisien kamu mengorganisir langkah-langkahnya.
⚠️ Jebakan umum:
- "Yang penting jalan" — kerja di n=10, ngadat di n=10jt. Programmer pemula vs senior dibedain disini
- Optimasi prematur — algoritma O(n) sederhana kalah dari "optimasi" rumit yang justru salah. Make it work, make it right, make it fast — urutannya begitu
- Lupa edge case — array kosong, 1 elemen, semua sama, descending, dll
🎯 Cara mendekati masalah algoritma:
- Ulangi masalah dengan kata sendiri — pastikan paham
- Tulis brute force dulu — selalu ada solusi naif
- Identifikasi bottleneck — di mana O(n²) keluar?
- Cari struktur data yang membantu — Hash Map? Heap?
- Test dengan edge case — kosong, satu, banyak
TL;DR: Algoritma = langkah terstruktur dengan input → output, jelas, terbatas, eksekusi-able. Setiap kode kamu sudah algoritma — yang membedakan junior vs senior: efisiensinya.