Explore all courses in this category.
Explore all courses in this category.
Nguyễn Đình Cường
0 comment
09 Nov, 2026
Mỗi lần bạn pha mì gói, tra từ điển hay xếp hàng mua vé, bạn đang làm theo một thuật toán mà không hề hay biết. Hiểu thuật toán là chìa khóa để chuyển từ "biết cú pháp" sang "biết giải bài toán".
Thuật toán (algorithm) là một dãy bước hữu hạn, rõ ràng, được sắp xếp theo thứ tự để giải quyết một bài toán. Một thuật toán tốt thường có các đặc điểm sau:
Thuật toán không phụ thuộc ngôn ngữ. Bạn có thể cài đặt cùng một thuật toán bằng Python, C++ hay JavaScript, ý tưởng vẫn giống nhau.
Giả sử bạn cần tìm "Minh" trong cuốn danh bạ xếp theo thứ tự chữ cái. Bạn sẽ không đọc từ trang đầu đến cuối. Bạn mở giữa cuốn, thấy chữ "L", biết "Minh" nằm phía sau nên bỏ nửa đầu, rồi lặp lại với nửa còn lại. Đó chính là ý tưởng của tìm kiếm nhị phân. Cùng một bài toán nhưng cách làm thông minh giúp bạn nhanh hơn rất nhiều khi danh sách dài.
Trước khi viết code, bạn nên mô tả thuật toán bằng lời hoặc mã giả (pseudocode). Ví dụ bài toán: tìm số lớn nhất trong một danh sách.
Chuyển sang Python:
def tim_lon_nhat(ds):
lon_nhat = ds[0]
for x in ds[1:]:
if x > lon_nhat:
lon_nhat = x
return lon_nhat
print(tim_lon_nhat([4, 9, 2, 7])) # 9Chú ý code chỉ là bước cuối. Phần quan trọng nhất là bạn đã nghĩ ra bốn bước ở trên.
Bài toán thường có nhiều cách giải. Hãy xét "kiểm tra một số có nằm trong danh sách hay không":
Không có cách nào luôn tốt nhất; bạn chọn dựa trên kích thước dữ liệu, yêu cầu tốc độ và bộ nhớ. Đó là lý do lập trình viên học về độ phức tạp thuật toán.
Người mới thường lao vào gõ code ngay và bị mắc kẹt giữa chừng. Hãy dành vài phút phác thảo các bước trước. Một lỗi khác là sợ bài khó rồi xem đáp án quá sớm; nên tự vật lộn một lúc, rồi mới tham khảo lời giải và sau đó tự viết lại không nhìn. Cách này giúp kiến thức ở lại lâu hơn nhiều so với chỉ đọc.
Hãy thử các bài sau, mỗi bài trước tiên viết ra các bước bằng lời rồi mới code:
Với mỗi bài, hãy tự kiểm tra bằng ba bộ dữ liệu: một trường hợp thông thường, một trường hợp biên (rỗng hoặc một phần tử) và một trường hợp "xấu" như toàn số giống nhau. Thói quen này quan trọng hơn việc giải được bài, vì thuật toán đúng là thuật toán đúng với mọi đầu vào hợp lệ. Sau khi giải xong, hãy hỏi thêm: số bước phụ thuộc vào độ dài danh sách thế nào? Câu hỏi này dẫn bạn tới khái niệm độ phức tạp ở các bài sau.
Thuật toán là cách suy nghĩ có trình tự để giải quyết vấn đề, nó nằm sau mọi phần mềm bạn dùng. Bắt đầu từ những bài đơn giản như tìm lớn nhất, đếm phần tử, đảo chuỗi, rồi tăng dần độ khó. Tư duy này sẽ theo bạn suốt sự nghiệp, bất kể bạn dùng ngôn ngữ nào.
Nếu cần một lộ trình rõ ràng thay vì tự mò mẫm, codebem.com có nhiều khóa học phù hợp cho người mới.
Nguyễn Đình Cường
0 comment