An algorithm is a set of instructions that are used to accomplish a task, such as finding the largest number in a list, removing all the red cards from a deck of playing cards, sorting a collection of names, or figuring out an average movie rating from just your friends' opinions.
Algorithms are not limited to computers. They are like a set of step-by-step instructions or an even a recipe, containing things you need, steps to do, the order to do them, conditions to look for, and expected results.
- C
- C++
- Java
Check Contribution Guide Before Contribution.
Before submitting a bug, please do the following: Check Contribution Guide Before Contribution.
- Create separate issues for Python and C++.
- You can only work on issues that you have been assigned to.
- Use Flake8 locally for linting Python Code.
pip install flake8
. (We have linting checks so if your code fails it we will not merge the PR.)
## Cấu trúc dữ liệu và giải thuật
- Mở đầu
- Cấu trúc dữ liệu là gì ?
- Cài đặt môi trường trong Cấu trúc dữ liệu
## Một số khái niệm về Giải thuật
- Giải thuật là gì ?
- Phân tích tiệm cận trong Cấu trúc dữ liệu và Giải thuật
- Giải thuật tham lam (Greedy Algorithm)
- Giải thuật chia để trị (divide and conquer)
- Giải thuật qui hoạch động (Dynamic Programming)
- Giải thuật định lý thợ - Master Theorem
## Cấu trúc dữ liệu mảng (Array)
- Cấu trúc dữ liệu mảng
## Danh sách liên kết - Linked Lists
- Cấu trúc dữ liệu danh sách liên kết (Linked List)
- Cấu trúc dữ liệu và giải thuật Danh sách liên kết đôi
- Cấu trúc dữ liệu Danh sách liên kết vòng (Circular Linked List)
## Ngăn xếp & Hàng đợi
- Cấu trúc dữ liệu ngăn xếp (Stack)
- Cấu trúc dữ liệu hàng đợi (Queue)
## Một số Giải thuật tìm kiếm
- Giải thuật tìm kiếm tuyến tính (Linear Search)
- Giải thuật tìm kiếm nhị phân (Binary Search)
- Giải thuật Tìm kiếm nội suy (Interpolation Search)
- Cấu trúc dữ liệu Hash Table
## Một số Giải thuật sắp xếp
- Giải thuật sắp xếp trong cấu trúc dữ liệu & giải thuật
- Giải thuật sắp xếp nổi bọt (Bubble Sort)
- Giải thuật sắp xếp chèn (Insertion Sort)
- Giải thuật sắp xếp chọn (Selection Sort)
- Giải thuật sắp xếp trộn (Merge Sort)
- Shell Sort trong cấu trúc dữ liệu và giải thuật
- Giải thuật sắp xếp nhanh (Quick Sort)
- Thuật toán quay lui (Back-tracking algorithm)
## Cấu trúc dữ liệu đồ thị (Graph)
- Cấu trúc dữ liệu đồ thị (Graph)
- Giải thuật tìm kiếm theo chiều sâu
- Giải thuật tìm kiếm theo chiều rộng
## Cấu trúc dữ liệu cây
- Cấu trúc dữ liệu cây
- Duyệt cây trong cấu trúc dữ liệu và giải thuật
- Cây tìm kiếm nhị phân (Binary Search Tree)
- Cây AVL trong cấu trúc dữ liệu và giải thuật
- Cây SPLAY trong cấu trúc dữ liệu và giải thuật
- Cây khung (Spanning Tree) trong cấu trúc dữ liệu và giải thuật
- Cấu trúc dữ liệu Heap
- Giải thuật Kruskal: tìm cây khung nhỏ nhất
- Giải thuật Prim: tìm cây khung nhỏ nhất
## Đệ qui (Recursion)
- Khái niệm cơ bản về đệ qui (Recursion)
- Bài toán Tháp Hà Nội (Tower of Hanoi)
- Dãy Fibonacci trong Cấu trúc dữ liệu và giải thuật