Di balik program yang efisien ada struktur data dan algoritma yang tepat. Kita menganalisis Big-O, membangun linked list, tree, dan graph, lalu mempraktikkan searching, sorting, dan dynamic programming pada kasus nyata.
Menilai biaya algoritma lewat jumlah operasi dan penggunaan memori, dilengkapi teknik pencatatan operasi dan pengukuran waktu dengan chrono.
Buka → # Big-O NotationNotasi Big-O untuk meringkas pertumbuhan biaya algoritma: O(1), O(log n), O(n), O(n log n), O(n^2), plus aturan menghitungnya dari kode dan best/average/worst case.
Buka → # Array dan Dynamic ArrayPerbedaan array statis dan dynamic array, mekanisme doubling di balik std::vector, serta implementasi mini DynamicArray<int> dari nol.
Buka → # Linked ListMembangun singly linked list manual: struct Node, insert head/tail, delete, traverse, dan search, serta perbandingannya dengan std::vector.
Buka → # StackKonsep LIFO dan implementasi stack berbasis std::vector, disertai aplikasi klasik: pemeriksa kurung seimbang.
Buka → # Queue dan DequeKonsep FIFO, implementasi circular buffer manual, simulasi antrian dengan std::queue, dan pengantar deque dua ujung.
Buka → # Hash TableKonsep hashing, penanganan collision dengan chaining, hash function untuk string, serta load factor dan rehash pada hash table mini.
Buka → # TreeTerminologi tree (root, leaf, depth, height), pembangunan binary tree dengan struct Node, dan tiga traversal rekursif: pre-order, in-order, post-order.
Buka → # Binary Search TreeProperti BST, insert dan search O(log n), in-order traversal yang menghasilkan data terurut, penghapusan dengan tiga kasus, dan bahaya tree degenerate.
Buka → # Heap dan Priority QueueProperti min-heap dan max-heap, representasi heap di array, sift-up dan sift-down manual, serta std::priority_queue dengan ordering-nya.
Buka → # GraphGraf sebagai simpul dan busur, perbandingan adjacency list dengan adjacency matrix, serta penjelajahan BFS dan DFS dengan urutan visit yang deterministik.
Buka → # Linear SearchImplementasi linear search manual dengan penghitung perbandingan, best case dan worst case, kapan algoritma ini cukup, serta pratinjau binary search.
Buka → # Binary SearchImplementasi binary search iteratif dan rekursif, syarat data terurut, jebakan overflow pada perhitungan mid, serta kaitannya dengan lower_bound.
Buka → # Sorting AlgorithmsSelection sort, insertion sort, dan merge sort diimplementasikan manual dengan penghitung perbandingan, tabel kompleksitas, serta recap std::sort.
Buka → # Recursion dan BacktrackingPola pilih-jelajahi-urungkan pada backtracking, diterapkan pada semua permutasi dan N-Queens 4x4 dengan hasil deterministik.
Buka → # Greedy AlgorithmsAlgoritma greedy pada coin change dan interval scheduling, termasuk contoh nyata kapan greedy gagal mencapai optimum.
Buka → # Divide and ConquerPola bagi-selesaikan-gabungkan, merge sort sebagai templatnya, dan studi kasus max subarray tiga cara dibandingkan dengan Kadane.
Buka → # Dynamic ProgrammingMemoization lawan tabulation, fibonacci tiga cara dengan penghitung panggilan, coin change minimum, dan LIS dengan rekonstruksi jawaban.
Buka → # Graph AlgorithmsDijkstra dengan adjacency list dan priority_queue untuk jarak terpendek, rekonstruksi jalur, serta deteksi siklus dengan DFS tiga warna.
Buka → # Memilih Struktur DataSatu beban kerja diuji pada empat struktur, tabel keputusan struktur data dan padanan STL, pertimbangan pola akses, serta rangkuman section.
Buka →