Algoritma dan struktur data adalah fondasi ilmu komputer. Section ini menerapkan keduanya di Kotlin dengan fokus pada kompleksitas dan keterbacaan.

# Kompleksitas Waktu dan Memori

Pelajari cara mengukur kinerja algoritma dengan kompleksitas waktu dan memori, serta trade-off klasik antara waktu dan ruang.

Buka →
# Big-O Notation

Pelajari Big-O Notation dari O(1) hingga O(2^n), beserta best/worst/average case untuk setiap algoritma.

Buka →
# Array dan Linked List

Pelajari Array dengan akses O(1) dan Linked List dengan insert/delete O(1) di posisi yang diketahui, serta implementasi LinkedList di Kotlin.

Buka →
# Stack dan Queue

Pelajari Stack (LIFO) dan Queue (FIFO) di Kotlin: implementasi dengan ArrayDeque, cek bracket seimbang, dan simulasi antrian.

Buka →
# Hash Table

Pelajari Hash Table: hash function, collision resolution dengan chaining dan open addressing, load factor, dan perbandingan dengan HashMap Kotlin.

Buka →
# Tree dan Binary Search Tree

Pelajari struktur tree: terminologi root/leaf/height, Binary Search Tree dengan insert/search O(log n), dan tiga jenis traversal.

Buka →
# Heap dan Priority Queue

Pelajari Min-Heap dan Max-Heap, implementasi sift-up/sift-down, java.util.PriorityQueue, dan use case top-K.

Buka →
# Graph

Pelajari struktur data graph: adjacency list vs matrix, directed/undirected, weighted, dan implementasi class Graph di Kotlin.

Buka →
# Searching Algorithms

Pelajari linear search O(n) dan binary search O(log n) pada sorted array, lengkap dengan function binarySearch bawaan Kotlin stdlib.

Buka →
# Sorting Algorithms

Pelajari algoritma pengurutan bubble, selection, insertion O(n²) dan merge, quick, heap O(n log n), serta function sorted() bawaan Kotlin.

Buka →
# Recursion dan Backtracking

Pelajari recursion dengan base case dan recursive case, risiko stack overflow, serta backtracking untuk N-Queens, permutasi, dan subset sum.

Buka →
# Greedy Algorithms

Pelajari pola greedy yang memilih local optimum menuju global optimum: coin change, activity selection, fractional knapsack, dan kapan greedy gagal.

Buka →
# Dynamic Programming

Pelajari memoization (top-down) dan tabulation (bottom-up) dengan contoh Fibonacci, 0/1 knapsack, LCS, dan minimum coin change.

Buka →
# Graph Algorithms

Pelajari BFS, DFS, Dijkstra shortest path, dan topological sort Kahn's algorithm dengan implementasi Kotlin di graph adjacency list berbobot.

Buka →
# Implementasi Algoritma dengan Kotlin

Pelajari cara menulis algoritma secara idiomatic Kotlin: extension function, sealed class untuk state, sequence untuk lazy evaluation, dan tail recursion.

Buka →