Kapan Pakai Apa? — Struktur Data

Memilih struktur data yang tepat adalah skill paling penting dalam programming. Berikut panduan praktis: Cheat Sheet Kebutuhan Struktur Data Terbaik Akses by…

Tiap struktur data jago di satu jenis kerjaan. Memilih struktur data artinya mencocokkan operasi yang paling sering kamu lakukan dengan struktur yang paling cepat untuk operasi itu. Mirip memilih alat di kotak perkakas: obeng bisa dipakai memukul paku, tapi palu jauh lebih cocok.

🧪 Tebakan cepat: kamu bikin tombol undo di editor teks. Aksi mana yang dibatalkan duluan, yang paling awal atau yang paling akhir? Jadi struktur apa yang cocok? Tebak dulu, jawabannya ada di bagian "Kalau kamu butuh X, pakai Y".

Kalau kamu butuh X, pakai Y

Kolom kedua juga menyebut biayanya dalam Big-O. O(1) artinya waktunya tetap, berapa pun banyak datanya. O(log n) tumbuh pelan sekali: 1.000 data, sekitar 10 langkah. O(n) artinya datanya dua kali lipat, waktunya kira-kira dua kali lipat.

Kalau kamu butuh... Pakai Contoh sehari-hari
ambil data lewat nomor urut (index) Array, O(1) lagu ke-3 di playlist
sering sisip atau hapus di tengah Linked list, O(1) di node yang sudah dipegang sambung atau lepas gerbong kereta
yang terakhir masuk keluar duluan (LIFO) Stack, O(1) tombol undo, tombol back di browser
yang pertama masuk keluar duluan (FIFO) Queue, O(1) antrean cetak di printer
cari nilai lewat key (nama, id, kata) Hash map (Map), rata-rata O(1) buku telepon: cari nomor lewat nama
cuma perlu tahu ada atau gak, tanpa duplikat Set, rata-rata O(1) cek username sudah dipakai
data selalu terurut, sering dicari rentangnya BST seimbang, O(log n) jadwal dari jam 9 sampai jam 12
yang terkecil atau terbesar diambil duluan Heap, O(log n) tugas paling mendesak dikerjakan duluan
cari kata lewat awalannya Trie, O(panjang awalan) kontak HP muncul setelah 3 huruf diketik
data bertingkat, tiap anak punya satu induk Tree folder di komputer
jaringan bebas, hubungannya bisa melingkar Graph pertemanan, peta jalan

Dua baris yang paling sering dipakai, dalam kode:

// Undo: Stack, yang terakhir masuk keluar duluan
const riwayat = [];
riwayat.push("ketik judul");
riwayat.push("tebalkan judul");
console.log(riwayat.pop()); // "tebalkan judul": undo aksi terakhir

// Hitung kata: hash map, kata jadi key, jumlahnya jadi value
const jumlah = new Map();
for (const kata of ["kopi", "teh", "kopi"]) {
  jumlah.set(kata, (jumlah.get(kata) || 0) + 1);
}
console.log(jumlah.get("kopi")); // 2

Cara memilih: dua pertanyaan

  1. Datanya paling sering dipakai buat apa? Disimpan berurutan (array, linked list, stack, queue), dicari dengan cepat (hash map, Set, BST, heap, trie), atau saling terhubung (tree, graph).
  2. Operasi apa yang paling sering? Ambil lewat index, cari, sisip, hapus, atau ambil yang terkecil. Pilih struktur yang paling murah untuk operasi itu, walau operasi lain jadi lebih mahal.

Kalau ragu, mulai dari array, Map, atau Set. Kebanyakan kode sehari-hari cukup dengan tiga itu. Ganti struktur kalau ada operasi yang sering dan terasa lambat.

⚠️ Jebakan yang sering ketemu

TL;DR: Pilih struktur dari operasi yang paling sering. Index: array. Terakhir masuk keluar duluan, misalnya undo: stack. Pertama masuk keluar duluan: queue. Cari lewat key atau menghitung kata: hash map. Cek ada atau gak: Set. Terurut dan rentang: BST seimbang. Terkecil atau terbesar duluan: heap. Awalan kata: trie. Bertingkat: tree. Jaringan: graph. Kalau ragu, mulai dari array, Map, dan Set.

Yang akan kamu pelajari