Chào mừng bạn đến với kho lưu trữ đáng yêu này ~ Đây là một tập hợp các bài giảng, ví dụ mã nguồn, và bài tập liên quan đến việc học và thực hành cấu trúc dữ liệu và thuật toán sử dụng ngôn ngữ lập trình C/C++. Cấu trúc dữ liệu và thuật toán là những khái niệm cơ bản và quan trọng trong lĩnh vực lập trình.
- Cấu trúc dữ liệu là cách tổ chức, quản lý và lưu trữ dữ liệu để nó có thể được sử dụng hiệu quả.
- Thuật toán là một tập hợp các bước thực hiện được xác định rõ ràng, nhằm giải quyết một vấn đề hoặc thực hiện một nhiệm vụ cụ thể.
Ngôn ngữ C và C++ là lựa chọn phổ biến cho việc học và ứng dụng cấu trúc dữ liệu và thuật toán vì nhiều lý do:
- C và C++ là ngôn ngữ lập trình cấp thấp hơn so với những ngôn ngữ bậc cao khác, giúp chúng có hiệu suất cao và gần gũi với phần cứng.
- C/C++ cung cấp khả năng quản lý bộ nhớ thủ công, giúp bạn hiểu rõ hơn về cách hoạt động của bộ nhớ và cách tối ưu hóa mã nguồn.
- Nhiều hệ điều hành, trình biên dịch, và hệ thống được viết hoặc hỗ trợ bởi C/C++, làm cho việc học hai ngôn ngữ này trở thành bước đệm quan trọng cho sự phát triển chuyên nghiệp.
Chương trình học này được thiết kế để dẫn dắt bạn từ cơ bản đến nâng cao, nắm vững những khái niệm và kỹ thuật quan trọng nhất trong lĩnh vực lập trình. Mỗi tuần, bạn sẽ tập trung vào một hoặc nhiều chủ đề cụ thể, bắt đầu từ nền tảng, xây dựng lên những kiến thức phức tạp hơn. Dưới đây là một số chủ đề chính bạn sẽ học:
Chủ đề | Nội dung | |
---|---|---|
Thuật toán | Recursion | Đệ quy |
Backtracking | Quay lui | |
Divide and Conquer | Chia để trị | |
Branch and Bound | Nhánh cận | |
Greedy Algorithm | Tham lam | |
Dynamic Programming | Quy hoạch động | |
Graph Algorithms | Các thuật toán trên đồ thị | |
Cấu trúc dữ liệu | Linked List | Danh sách liên kết |
Stack | Ngăn xếp | |
Queue | Hàng đợi | |
Deque | Hàng đợi hai đầu | |
Trees | Cây tổng quát, cây nhị phân | |
Hash Table | Bảng băm | |
Graph | Đồ thị |
Dưới đây là một số cuốn sách tôi sử dụng cho việc học tập, hãy tham khảo để có thêm những thông tin hữu ích. Nghiền ngẫm chúng cùng lúc với khi xem xét kho lưu trữ này để có hiệu quả tốt nhất nhé ~
- Michael T. Goodrich, Roberto Tamassia, David M. Mount; Data Structures and Algorithms in C++; Second Edition.
- Alexander Shen; Algorithms and Programming: Problems and Solutions; Second Edition.
- Antti Laaksonen; Guide to Competitive Programming: Learning and Improving Algorithms Through Contests.
- Robert C. Seacord; Effective C: An Introduction to Professional C Programming.