Giao diện
Algorithms 🧠
Tài liệu tham khảo thuật toán và cấu trúc dữ liệu cho lập trình viên Việt Nam. Tại đây, chúng tôi tập trung vào hiểu bản chất thay vì chỉ học thuộc lòng code.
📚 Các chủ đề
🔢 Sorting (Sắp xếp)
Các thuật toán sắp xếp từ cơ bản đến nâng cao.
- Basic: Bubble Sort, Selection Sort, Insertion Sort
- Advanced: Merge Sort, Quick Sort, Heap Sort
- Production: Timsort, Radix/Counting Sort
🔍 Searching (Tìm kiếm)
Kỹ thuật tìm kiếm dữ liệu hiệu quả.
- Tâm điểm: Binary Search (Tìm kiếm nhị phân) - Kỹ thuật không thể thiếu của mọi kỹ sư.
🕸️ Graph (Đồ thị)
Lý thuyết đồ thị và các ứng dụng thực tế trong Routing, GPS.
- Duyệt: BFS & DFS
- Shortest Path: Dijkstra, Bellman-Ford, Floyd-Warshall
🧩 Dynamic Programming
Kỹ thuật tối ưu hóa bài toán đệ quy bằng cách lưu trữ kết quả.
- Core Concepts: Memoization vs Tabulation - Overlapping Subproblems, Optimal Substructure
- Classic: Climbing Stairs, Knapsack, LCS
🏃 Greedy & Backtracking
Hai paradigm giải bài toán: tham lam và quay lui.
- Greedy: Huffman Coding - Nền tảng nén dữ liệu (ZIP)
- Backtracking: N-Queens - Constraint satisfaction, AI planning
🏗️ Advanced Data Structures
Cấu trúc dữ liệu nâng cao cho hiệu năng O(log N).
- Heap & Priority Queue - Fast min/max, CPU scheduling, Dijkstra
- Segment Tree - Range sum/min/max, stock market analysis
- Fenwick Tree (BIT) - Simpler sum queries, count inversions
⚡ Bit Manipulation
Thao tác bit cấp thấp cho hiệu năng cao.
- XOR Tricks - Swap, find single, missing number
- Bitmasking - Subset generation, RBAC permissions
- Fast Exponentiation - A^B mod M in O(log B), RSA crypto
📊 Độ phức tạp (Big O)
Hiểu về hiệu năng thuật toán. Time Complexity và Space Complexity là ngôn ngữ chung của các kỹ sư phần mềm.
🚀 Bắt đầu ngay
Hãy bắt đầu với Độ phức tạp (Big O) để hiểu cách đo lường "tốc độ" của code, sau đó thử sức với Bubble Sort!