Array adalah struktur data paling dasar — kumpulan elemen yang disimpan secara berurutan di memori.
Operasi array dan kompleksitasnya:
| Operasi | Kompleksitas | Penjelasan |
|---|---|---|
| Akses (index) | O(1) | Langsung ke posisi — instan |
| Pencarian | O(n) | Harus cek satu per satu |
| Sisip di akhir | O(1) | Tambah di belakang — cepat |
| Sisip di tengah | O(n) | Harus geser elemen setelahnya |
| Hapus di akhir | O(1) | Buang elemen terakhir — cepat |
| Hapus di tengah | O(n) | Harus geser elemen setelahnya |
const arr = [10, 20, 30, 40, 50];
// Akses — O(1)
arr[2]; // 30
// Sisip di akhir — O(1)
arr.push(60); // [10, 20, 30, 40, 50, 60]
// Sisip di tengah — O(n)
arr.splice(2, 0, 25); // [10, 20, 25, 30, 40, 50, 60]
// Hapus di akhir — O(1)
arr.pop(); // [10, 20, 25, 30, 40, 50]
// Hapus di tengah — O(n)
arr.splice(1, 1); // [10, 25, 30, 40, 50]
Kapan pakai Array?
- Butuh akses cepat berdasarkan posisi (index)
- Data berurutan dan ukuran relatif tetap
- Operasi utama di ujung array (push/pop)
🎭 Analogi sehari-hari: Array = loker olahraga di sekolah. Loker nomor 7? Langsung ke loker nomor 7 (O(1) — instan). Tapi mau nyisip loker baru di antara nomor 3 dan 4? Semua loker dari 4 ke atas harus geser nomor (O(n) — repot). Karena itu push ke ujung cepat, sisip di tengah lambat.
💡 Mengapa akses by index O(1)? Memori komputer = jajaran kotak berurutan. arr[5] = alamat_awal + (5 × ukuran_elemen). Cuma matematika sederhana, langsung ketemu, gak peduli array berisi 10 atau 1 juta elemen.
⚠️ Jebakan umum:
arr.unshift(x)(sisip di awal) O(n) — semua elemen harus geser, jangan pakai di loop besararr.includes(x)O(n) — kalau sering cek "ada gak", pakai Set (O(1))arr.splice(i, 1)di tengah O(n) — kalau urutan tidak penting, swap dengan elemen terakhir lalupop()
🧪 Tebakan cepat: Loop 1 juta arr.unshift(x) vs 1 juta arr.push(x) — beda berapa kali lipat? Push cuma O(n) total. Unshift O(n²) total. Beda jutaan kali.
TL;DR: Array cepat di ujung & akses by index. Sisip/hapus di tengah lambat. Pakai untuk data berurutan dengan operasi di ujung.