10 BÍ KÍP CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT KHÔNG PHẢI AI CŨNG BIẾT

21-06-2018 14:48

“Ác mộng” của 80% sinh viên CNTT đó là Cấu trúc dữ liệu và giải thuật.

 

 

Hôm nay, ITPlus sẽ giới thiệu đến các bạn 10 cuốn sách kinh điển trong mảng này, tất nhiên là những cuốn sách này không được xếp theo thứ tự hơn – kém vì mỗi cuốn sách đều cover các topic rất tốt. 10 bí kíp được đưa ra nhưng không có nghĩa là bạn phải đọc cả 10. Bạn chỉ cần ngấm hết những tinh hoa trong 2 cuốn, trình giải thuật của bạn đã khá hơn rất nhiều so với các dev chuyên nghiệp rồi!

#1 Data Structures and Algorithms Made Easy – Narasimha Karumanchi

 

Đây là cuốn sách giải thích các cấu trúc dữ liệu kèm theo source code C/C++. Độc giả có thể test song song với đọc. Nếu thích Java? Thì bạn nên chọn phiên bản “Data Structures and Algorithm Made Easy by Java”. Cuốn sách này giải thích các khái niệm cấu trúc dữ liệu xuyên suốt 21 chương với các chủ đề như: Linked Lists, Stacks, Queues, Trees, Priority Queues, Heaps, String Algorithms, Recursion & Backtracking, Algorithms Design Technique… Nó đưa ra nhiều phương pháp tiếp cận khác nhau cho các vấn đề, nhờ đó, độc giả có thể dễ dàng hình dung và phân tích được các giải thuật tương ứng cho từng bài toán. 

Ngôn ngữ sử dụng: C/C++

#2 Data Structures and Algorithm in Java, 2nd Edition – Robert Lafore

 

Cuốn này giải thích các concept ở mức căn bản nhất. Theo đó là các gợi ý về giải pháp cho mỗi dự án ở từng chương. Sách này đã từng được sử dụng làm giáo trình cho một khóa học “Cấu trúc dữ liệu và giải thuật”. Các chủ đề ở những cuốn sách này thường không khác nhau là bao nhiêu, vẫn là các cấu trúc dữ liệu quen thuộc : Stack, queue, heaps, hashtable….. 

Ngôn ngữ sử dụng: Java

#3 The Algorithm Design Manual, 2nd Edition – Steven S. Skiena

 

Đây là cuốn sách sẽ giúp cho buổi phỏng vấn của các bạn trơn tru hơn. 

Một người thiết kế thuật toán tốt là người nắm được những nguyên lý thiết kế cơ bản, kèm theo đó là các cấu trúc dữ liệu, dynamic programming, depth first search, backtracking và tìm kiếm heuristic… Cuốn sách này sử dụng Pseudocode. Từ Pseudocode, bạn có thể chuyển qua bất kỳ ngôn ngữ nào. Khía cạnh lịch sử liên quan đến việc áp dụng các giải thuật xảy ra trong chiến tranh thế giới cũng được đề cập trong cuốn này với một góc nhìn khá thú vị.

The Algorithm Desgin Manual đã được Steve Yegge đề xuất cho các ứng viên phỏng vấn tại Google.

Ngôn ngữ sử dụng: C/Pseudocode

#4 Introduction to Algorithm, 3rd edition – Thomas H.Cormen

 

Cuốn sách này được cover một phạm vi khá rộng trong cấu trúc dữ liệu, bên cạnh đó, mỗi chủ đề đều được viết rất sâu và kỹ. Introduction to Algorithm phù hợp với tất cả đối tượng – từ sinh viên chưa tốt nghiệp cho đến chuyên gia chuyên nghiệp…

Pseudocode được sử dụng để trình bày các ý tưởng trong cuốn sách này. Các chủ đề thuộc giải thuật hiện đại như lý thuyết đồ thị, giải thuật đa luồng đều được đề cập rất chi tiết. 

Introduciton to Algorithm là một bí kíp cần được tu luyện tử tế trước khi đi phỏng vấn.

#5 Algorithm, 4th Edition – Robert Sedgewick, Kevin Wayne.  

 

Cuốn này được sử dụng rộng rãi tại các trường đại học trên toàn thế giới. Nó thống kê các thuật toán quan trọng đang được áp dụng rộng rãi cũng như đề cập một cách hết sức chi tiết tới các thuật toán và cấu trúc dữ liệu áp dụng cho công việc tìm kiếm, sắp xếp, xử lý đồ thị và xử lý xâu ký tự, Tác giả Robert Sedgewick và Kevin Wayne cũng duy trì một cổng thông tin điện tử cung cấp source code tương ứng. Trong tài liệu này, ngôn ngữ lập trình được sử dụng là Java.

Ngôn ngữ sử dụng: Java

#6 Elements of Programming Interviews in Java: The Insiders’ Guide – Adnan Aziz, Tsung-Hsien Lee, Amit Prakash

 

The Elements of Programming Interviews hỗ trợ rất hiệu quả cho các buổi phỏng vấn. Tác giả cuốn này phát hành 2 bản, một bản cho ngôn ngữ C và một bản cho Java. 

Các hướng dẫn trong quyển này bắt đầu với các giải thuật kiểu vét cạn, sau đó phân tích và đi đến những lựa chọn tối ưu hơn. Tất cả các vấn đề đều được phân loại dựa theo độ khó và các trường hợp liên quan trong thực tế, kèm theo đó là những gợi ý hữu ích, nhờ vậy bạn dễ dàng hiểu và áp dụng các giải thuật này trong công việc thường nhật.  Cuốn sách này cũng mô phỏng được một phần những khó khăn bạn sẽ gặp phải trong các buổi phỏng vấn.

Ngôn ngữ: Java/C++

#7 Programming Pearls, 2nd Edition – Jon Bentley

 

Ngôn ngữ lập trình được sử dụng ở đây là ngôn ngữ C.

“Những viên ngọc của lập trình” – Programming Pearls là một bộ sưu tập các vấn đề kinh điển và khá phổ biến trong giới lập trình: thuật toán sắp xếp, tìm kiếm, kiểm thử phần mềm, bài toán tối ưu, …..Mỗi vấn đề đều kèm theo hướng dẫn và các bài phân tích hết sức chi tiết.

Ngôn ngữ: C

#8 Algorithms in C, 3rd Edition – Robert Sedgewick

 

Đây là một bộ 2 cuốn sách. Chúng được coi như nguồn tài nguyên quý giá dành cho các nhà nghiên cứu, các developer và thậm chí là cả sinh viên ngành CNTT. 

Cuốn đầu tiên giới thiệu các ý niệm cơ bản liên quan tới cấu trúc dữ liệu và giải thuật.

Cuốn thứ 2 tập trung vào các thuật toán đồ thị với trên 2000 bài tập thực hành. Đi kèm với khối lượng bài tập khổng lồ đó là các hướng dẫn và sample code mẫu mực của tác giả.

Ngôn ngữ: C

#9 The Art of Computer Programming, 1st Edition – Donald E. Knuth

 

Đây là một tập hợp đồ sộ các giải thuật và phân tích được tổ chức thành 3 phần:

Phần 1 gồm các kiến thức nền liên quan đến toán học và những cấu trúc dữ liệu căn bản. Phần 2 dành cho semi-numerical algorithm. Phần cuối cùng giống như một cuốn bí kíp toàn tập về các kỹ thuật tìm kiếm và sắp xếp.

Ngôn ngữ: Pseudocode

#10 Hacker’s Delight 2nd Edition by Henry S. Warren

 

Bí kíp này sẽ tổng hợp các mẹo liên quan tới kỹ thuật, giải thuật. Mục tiêu chính là giúp bạn lập trình linh hoạt hơn, từ đó nâng cao hiệu suất công việc. Các tricks được trình bày “chi tiết đến từng bit”. Cuốn sách này cũng chứa một chương trình tối ưu hóa cho máy tính RISC.

Ngôn ngữ: C

Ban Truyền thông ITPlus Academy

Bài viết cùng chủ đề

1