Pemilihan struktur data yang tepat bisa membuat kode 10-1000x lebih cepat. Di episode ini kalian memahami peta jalan seluruh struktur data yang akan dipelajari, membedakan linear vs non-linear dan static vs dynamic, serta membandingkan waktu lookup hash map vs linear scan pada dataset 10 ribu item.

Setelah di episode 0 kita menyiapkan environment — memastikan Python terinstall, PythonTutor dan VisuAlgo siap dipakai — pada episode ini kita memahami mengapa data structure itu penting. Bukan sekadar teori, melainkan dampak nyata terhadap performa kode kalian.
Mengapa ini harus dipahami di awal? Karena memilih struktur data yang salah sama seperti menggunakan truk untuk mengantar surat — mungkin berhasil, tetapi sangat tidak efisien. Pemilihan DS yang tepat adalah perbedaan antara kode yang berjalan dalam milidetik versus kode yang berjalan dalam menit.
Pertimbangkan dua skenario pencarian di dataset 10 ribu item:
| Skenario | Struktur Data | Waktu Lookup |
|---|---|---|
| Dictionary/country lookup | Hash Map | ~O(1) ≈ 0.001 ms |
| Dictionary/country lookup | Linear scan (list) | ~O(n) ≈ 10 ms |
Untuk 10 ribu item, perbedaannya mungkin tidak dramatis. Tetapi bayangkan kalian melakukan lookup jutaan kali per hari di production system — perbedaan 10.000x akan terakumulasi menjadi jam waktu komputasi yang terbuang.
Data structure adalah bahasa umum antara programmer dan machine. Ketika kalian mendengar "hash map", kalian langsung tahu bahwa lookup rata-rata O(1). Ketika kalian mendengar "binary search tree", kalian tahu bahwa operasi terurut O(log n). Ini adalah cara programmer berkomunikasi tentang trade-off tanpa harus mendeskripsikan semuanya dari nol.
Hampir semua sistem software dibangun di atas struktur data:
Tanpa pemahaman tentang struktur data, kalian hanya bisa menggunakan tools tanpa memahami bagaimana cara kerjanya di balik layar.
Series ini mencakup 28 episode yang terorganisir dalam enam fase:
Linear berarti elemen-elemen diakses secara berurutan satu per satu — seperti membaca buku halaman demi halaman. Contoh: array, linked list, stack, queue.
Non-linear berarti elemen-elemen memiliki hubungan hierarkis atau jaringan — seperti peta kota yang dihubungkan jalan. Contoh: tree, graph.
Static berarti ukuran ditentukan saat inisialisasi dan tidak berubah — seperti wadah dengan ukuran tetap. Contoh: array fixed-size.
Dynamic berarti ukuran bisa berubah saat runtime — seperti wadah yang bisa membesar dan mengecil. Contoh: linked list, hash table.
| Pattern | Struktur Data | Operasi Efisien |
|---|---|---|
| Random access | Array | Get/set by index O(1) |
| Sequential access | Linked List | Traverse O(n) |
| Key-value | Hash Table | Get/put O(1) average |
| Ordered | BST, Heap | Min/max O(log n) |
| Range query | B+ Tree, Sorted Array | Range search O(log n + k) |
Kita akan membandingkan waktu lookup antara hash map dan linear scan pada dataset 10 ribu item:
import time
import random
data = [f"item_{i}" for i in range(10000)]
lookup_keys = random.sample(data, 1000)
# Linear scan
start = time.perf_counter()
for key in lookup_keys:
if key in data:
pass
linear_time = time.perf_counter() - start
# Hash map
data_dict = {item: True for item in data}
start = time.perf_counter()
for key in lookup_keys:
if key in data_dict:
pass
hash_time = time.perf_counter() - start
print(f"Linear scan: {linear_time:.4f}s")
print(f"Hash map: {hash_time:.6f}s")
print(f"Speedup: {linear_time / hash_time:.0f}x")Hash map seharusnya beberapa ribu kali lebih cepat dari linear scan untuk dataset ini. Perbedaan ini akan semakin dramatis seiring bertambahnya jumlah data.
Tip
Jalankan kode ini di PythonTutor untuk melihat bagaimana hash map dan list tersimpan berbeda di memori. Perhatikan bahwa list menyimpan elemen secara berurutan, sementara hash table menggunakan array dengan hash function untuk menentukan lokasi.
Inti yang harus dibawa pulang:
Di episode 2 selanjutnya kita akan membahas analisis kompleksitas (Big-O, Omega, Theta) — bagaimana mengukur dan membandingkan performa algoritma secara formal, teknik menjatuhkan konstanta dan suku rendah, serta analisis Big-O untuk lima fungsi berbeda secara manual lalu mengukur waktunya di Python. Pastikan kalian sudah menjalankan percobaan di episode ini, karena perjalanan Belajar Data Structure baru saja memanas!