Menu
CoddyTech
Lộ trình học

Cấu trúc dữ liệu và thuật toán với Python

Python là cách trọn vẹn nhất để đi lộ trình này: mọi khóa học đều được dạy bằng Python, trừ thao tác bit, chỉ có bằng C++ và được liệt kê sau các bước. Bạn tự xây stack, bảng băm, heap và cây AVL, để list, dict, deque và heapq thôi là phép màu, rồi chứng minh điều đó qua các bài phỏng vấn được chấm điểm. Miễn phí, ngay trên trình duyệt, kèm chứng nhận ở hầu hết khóa học.

404 bài học284 thử thách702 câu hỏi trắc nghiệm

DSA với Python, từng bước một

40 khóa học404 bài học284 thử thách702 câu hỏi trắc nghiệm

Mỗi bước là một nhóm khóa học có sẵn trên Coddy, và mọi nút "Bắt đầu" đều mở chúng bằng Python. Khóa học duy nhất không dạy bằng Python, thao tác bit, được liệt kê sau các bước.

  1. 1
    Bắt đầu bước nàyBắt đầuStack, hàng đợi, cây nhị phân, bảng băm và danh sách liên kết, mỗi cấu trúc được xây từ đầu bằng Python rồi dùng để giải bài. Học xong, bạn biết list, deque và dict làm gì cho mình, và chúng tốn bao nhiêu.Bắt đầu
  2. 2
    Bắt đầu bước nàyBắt đầuDanh sách liên kết đôi, heap và hàng đợi ưu tiên, trie, đồ thị và cây AVL tự cân bằng. Học xong, heapq là binary heap bạn đã tự viết, và cây cân bằng mà Python chưa bao giờ cung cấp là thứ bạn xây được.Bắt đầu
  3. 3
    Bắt đầu bước nàyBắt đầuBubble sort, selection sort, insertion sort, merge sort, quick sort, heap sort, counting sort và radix sort, viết bằng Python và xem trong công cụ trực quan hóa. sorted() của Python là Timsort, kết hợp merge sort và insertion sort, và sau bước này bạn nói được vì sao đó là một ý hay.Bắt đầu
  4. 4
    Bắt đầu bước nàyBắt đầuThử thách đệ quy, rồi quy hoạch động từ memoization đến tabulation, cả hai đều bằng Python. Thao tác bit được dạy bằng C++ nên được liệt kê sau các bước; các toán tử &, |, ^, << và >> của nó cũng là toán tử của Python, nên vẫn rất dễ đọc.Bắt đầu
  5. 5
  6. 6
Bạn nhận được gì
Mọi thứ bạn sẽ dùng để học lập trình

Học qua thực hành

Viết code thật, truy vấn cơ sở dữ liệu, xây dựng trang web và làm chủ prompt AI. Các bài học tương tác bao quát mọi kỹ năng mà lập trình viên hiện đại cần.

playground.js
Trình chỉnh sửa code
1const greeting = "Hello, Coddy!"
2function sayHi(name) {
3    return greeting + " " + name
4}
5
bottombar Collapse icon
Test #1test Case Success icon
Test #2test Case Success icon
Test #3test Case Failure icon
Đầu vào
"Alex"
Đầu ra
"Hello, Coddy! Alex"

Xây dựng streak

Học đều đặn và nhìn tiến độ của bạn lớn dần! Theo dõi thói quen code mỗi ngày, bảo vệ streak bằng ngày đóng băng và nhận phần thưởng khi học mỗi ngày.

12 ngày streak

Quay lại ngày mai để giữ streak!

fire Filled icon
left icon

January 2026

right icon

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

21

22

23

24

25

26

27

28

29

30

product Double Or Nothing icon

Gấp đôi hoặc mất hết

Ngày 5/7

fire Freeze icon

Đóng băng streak

2 left

Code ở mọi nơi

Mang hành trình lập trình theo bên mình! Không cài đặt, không tải về: chỉ cần mở ra và bắt đầu code. Có trên iOS, Android và Web với đánh giá 4,9 sao.

Python
7Streak
250Điểm
5Năng lượng
Biến
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Right Done icon
journey Hex Done Base iconjourney Hex Done Shadow iconjourney Hex Done Top iconjourney Lesson Done icon
journey Path Left Done icon
journey Hex Active Base iconjourney Hex Active Shadow iconjourney Hex Active Top iconjourney Lesson Theory Challenge icon
Tiếp tục
journey Path Right icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson Theory Challenge icon
journey Path Left icon
journey Hex Locked Base iconjourney Hex Locked Shadow iconjourney Hex Locked Top iconjourney Lesson All icon
Hành trình
Mục tiêu
Bảng xếp hạng
Hồ sơ
4.9
Ngôi saoNgôi saoNgôi saoNgôi saoNgôi sao
Đánh giá

Bạn không đơn độc

Thi đấu trên bảng xếp hạng toàn cầu, mời bạn bè để nhận phần thưởng và cùng nhau ăn mừng thành công. Học code cùng bạn bè vui hơn nhiều!

Giải đấu Challenger
Giải đấu ChallengerTop 7 được thăng hạng
leaderboard First icon1
avatar 1 icon
fire Filled icon
Alex7+ Days
2840
leaderboard Second icon2
avatar 2 icon
fire Filled icon
Jordan7+ Days
2650
leaderboard Third icon3
avatar 3 icon
fire Filled icon
Sam7+ Days
2420
4
avatar 4 icon
Casey
2180
5
avatar placeholder icon
fire Filled icon
Morgan7+ Days
1950
leaderboard Arrow Up iconVùng thăng hạngleaderboard Arrow Up icon

Mọi cách để học

Đọc, nghe, tự kiểm tra, hỏi AI hoặc tra cứu bất cứ điều gì bạn đã học. Mỗi bài học phù hợp với trình độ của bạn.

Giới thiệu về biến
Âm thanh

Biến là một vùng chứa có tên, lưu một giá trị mà bạn có thể dùng lại sau trong chương trình.

Trong Python, bạn tạo biến bằng cách viết tên, dấu bằng, rồi giá trị muốn lưu.

Giá trị có thể thay đổi theo thời gian. Gán lại tên đó chỉ đơn giản là trỏ nó tới một giá trị mới.

1xSarah

Nhận chứng nhận

Nhận chứng nhận cho mỗi khóa học bạn hoàn thành. Thêm vào hồ sơ LinkedIn và CV để cho nhà tuyển dụng thấy kỹ năng lập trình của bạn.

CoddyGiấy chứng nhận hoàn thành
Chứng nhận rằngNguyễn Văn Anđã hoàn thành xuất sắc
python iconPython cơ bản
Đã xác minh
NgàyTh1 2026
LinkedInThêm vào LinkedIn

Vì sao nên học DSA với Python trên Coddy

  • Cả lộ trình, trong một ngôn ngữ. Cấu trúc dữ liệu, thuật toán sắp xếp, đệ quy, quy hoạch động, thuật toán đồ thị và các gói phỏng vấn đều được dạy bằng Python, và cả chuỗi phỏng vấn Python, vốn không có ở ngôn ngữ nào khác. Chỉ thao tác bit là ngoại lệ: nó được dạy bằng C++ và liệt kê sau các bước.
  • Những thứ dựng sẵn mà bạn giải thích được. Python trao cho bạn list, dict, set, deque và heapq. Tự xây các cấu trúc đứng sau chúng là cách để hiểu vì sao list.pop(0) chậm, vì sao tra cứu trong dict trung bình mất thời gian hằng số, và khi nào heap thắng sắp xếp, đúng những gì người phỏng vấn hỏi sau khi bạn dùng một cấu trúc.
  • Code ngắn, nên ý tưởng lộ rõ. Một danh sách liên kết hay tìm kiếm nhị phân vừa trong một màn hình với Python, không có khai báo kiểu hay quản lý bộ nhớ chen vào. Đó là lý do Python là ngôn ngữ nhanh nhất để học thuật toán, và vì sao rất nhiều ứng viên chọn nó cho phỏng vấn lập trình.
  • Chấm điểm như một buổi phỏng vấn. Bài học nào cũng kết thúc bằng một thử thách được kiểm tra bằng test case, và khi một test case không qua, Bugsy đọc code Python của bạn và gợi hướng sửa mà không đưa luôn đáp án. Chứng nhận miễn phí ở hầu hết khóa học, mỗi chứng nhận đều xác minh được tại URL riêng.

Câu hỏi thường gặp về DSA với Python

Python có phù hợp để học cấu trúc dữ liệu và thuật toán không?

Có, và để học thì có lẽ là lựa chọn tốt nhất: code ngắn, nên thứ bạn đọc là thuật toán chứ không phải cú pháp xung quanh. Có hai sự đánh đổi nên biết. Python chạy chậm hơn Java hay C++, điều này quan trọng với giới hạn thời gian khắt khe trong lập trình thi đấu nhưng hiếm khi ảnh hưởng khi phỏng vấn, và các cấu trúc dựng sẵn che giấu đúng những chi phí bạn đang học cách suy luận, nên lộ trình này cho bạn tự xây chúng trước.

Cần biết những cấu trúc dữ liệu Python nào cho phỏng vấn lập trình?

list (mảng động), dict và set (bảng băm), tuple, collections.deque (hàng đợi nhanh ở cả hai đầu), heapq (binary min-heap trên một list) và collections.Counter. Hãy biết mỗi thao tác tốn bao nhiêu, không chỉ biết tên. Python không có danh sách liên kết, cây, trie hay đồ thị dựng sẵn, nên bạn tự viết chúng ở bước một và bước hai.

Sao phải tự cài đặt stack hay hàng đợi khi Python đã có sẵn?

Vì phỏng vấn hiếm khi yêu cầu bạn dùng hàng đợi, nhưng thường hỏi vì sao lời giải của bạn chậm. Hàng đợi xây trên list phải trả giá cho mỗi lần pop(0), vì mọi phần tử còn lại đều dời đi một vị trí; deque.popleft() thì không. Tự cài đặt mỗi cấu trúc một lần là cách hiểu chi phí đủ rõ để chọn đúng cấu trúc mà không cần nghĩ.

Python có đủ nhanh cho lập trình thi đấu không?

Với hầu hết bài toán thì có. Khi giới hạn thời gian khắt khe, C++ là lựa chọn an toàn hơn, nên phần lớn dân lập trình thi đấu dùng nó, và nhiều hệ thống chấm bài có PyPy, chạy cùng code Python nhanh hơn nhiều. Trong phỏng vấn, bạn viết nhanh đến đâu quan trọng hơn nhiều so với code chạy nhanh đến đâu, và ở đó Python thắng.

Giới hạn đệ quy của Python là gì, và nó có ảnh hưởng đến DSA không?

CPython mặc định dừng ở độ sâu 1.000 lời gọi, nên tìm kiếm theo chiều sâu bằng đệ quy trên một chuỗi dài có thể ném ra RecursionError. Bạn có thể nâng giới hạn bằng sys.setrecursionlimit, nhưng thói quen tốt hơn, và là điều người phỏng vấn thích thấy, là biết cách thay đệ quy bằng vòng lặp và một stack tường minh: chính cấu trúc bạn xây ở bước một.

Có cần biết Python trước khi bắt đầu lộ trình này không?

Bạn nên quen với hàm, vòng lặp, list và từ điển, tốt nhất là cả lớp, vì mọi cấu trúc ở đây đều được viết dưới dạng lớp. Nếu chưa đến mức đó, khóa học Python của Coddy sẽ đưa bạn đến đó trước, miễn phí, và lộ trình này tiếp nối từ chỗ khóa học đó kết thúc.

Tôi có nhận được chứng nhận cho lộ trình Cấu trúc dữ liệu & thuật toán không?

Có. Hoàn thành mọi bước và bạn nhận một chứng nhận miễn phí cho cả lộ trình Cấu trúc dữ liệu & thuật toán. Chứng nhận liệt kê từng khóa học bạn đã hoàn thành trên đường đi và liên kết đến chứng nhận riêng của từng khóa, để ai cũng có thể kiểm tra mọi kỹ năng được nêu. Bạn có thể thêm nó vào hồ sơ LinkedIn. Đây là chứng nhận hoàn thành của Coddy, không phải văn bằng được kiểm định.

Các lộ trình học khác

Cùng các khóa học, sắp xếp cho một vai trò khác. Tiến độ được giữ lại: khóa học đã hoàn thành ở một lộ trình được tính ở mọi lộ trình có khóa học đó.

Tất cả lộ trình học
Hình minh họa các ngôn ngữ lập trình của Coddy

Bắt đầu lộ trình Cấu trúc dữ liệu & thuật toán miễn phí

Bắt đầu học