My first Magazine pemrograman-kompetitif-dasar | Page 6

Daftar Isi 5 Divide and Conquer 5.1 Konsep Divide and Conquer . . . . . . . . . . . . 5.2 Studi Kasus 1: Merge Sort . . . . . . . . . . . . 5.2.1 Contoh Eksekusi Merge Sort . . . . . . . 5.2.2 Menggabungkan Dua Array yang Terurut 5.2.3 Implementasi Merge Sort . . . . . . . . . 5.3 Studi Kasus 2: Quicksort . . . . . . . . . . . . . 5.3.1 Partisi Quicksort . . . . . . . . . . . . . . 5.3.2 Implementasi Quicksort . . . . . . . . . . 5.3.3 Pemilihan Pivot . . . . . . . . . . . . . . . 5.4 Studi Kasus 3: Mencari Nilai Terbesar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42 42 43 43 45 47 49 49 52 54 54 6 Greedy 6.1 Konsep Greedy . . . . . . . . . . . . . 6.2 Menemukan Subpersoalan . . . . . . . 6.3 Greedy Choice . . . . . . . . . . . . . 6.4 Penyelesaian dengan Teknik Greedy . 6.5 Permasalahan pada Algoritma Greedy 6.6 Pembuktian Greedy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 56 56 57 58 60 61 7 Dynamic Programming 7.1 Konsep Dynamic Programming . . . . 7.1.1 Top-down . . . . . . . . . . . 7.1.2 Bottom-up . . . . . . . . . . . 7.2 Contoh-contoh DP Sederhana . . . . . 7.2.1 Knapsack . . . . . . . . . . . . 7.2.2 Coin Change . . . . . . . . . . 7.2.3 Longest Common Subsequence 7.2.4 Memotong Kayu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62 62 62 65 68 68 72 74 76 8 Struktur Data Dasar 8.1 Dynamic Array . . . . . . . . . . . . 8.1.1 Aplikasi Dynamic Array . . . 8.1.2 Implementasi Dynamic Array 8.2 Stack . . . . . . . . . . . . . . . . . 8.2.1 Aplikasi Stack . . . . . . . . 8.2.2 Implementasi Stack . . . . . 8.3 Queue . . . . . . . . . . . . . . . . . 8.3.1 Aplikasi Queue . . . . . . . . 8.3.2 Implementasi Queue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 80 82 82 83 84 85 87 87 87 9 Perkenalan Graf 9.1 Konsep Graf . . . . . . . . . . . . . . 9.2 Jenis Graf . . . . . . . . . . . . . . . . 9.2.1 Tree . . . . . . . . . . . . . . . 9.2.2 Directed Acyclic Graph . . . . 9.3 Representasi Graf pada Pemrograman 9.3.1 Adjacency Matrix . . . . . . . . 9.3.2 Adjacency List . . . . . . . . . 9.3.3 Edge List . . . . . . . . . . . . 9.4 Perbandingan Representasi Graf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 89 90 91 93 93 93 94 95 96 iv