Data Structure Algorithm Book Recommendations

first place

Original title: The Art of Computer Programming
Chinese name: The Art of Computer Programming
Author : Donald E.Knuth
Difficulty: ★★★★★
Personal Evaluation: ★★★★★
Recommendation: ★★★

This book is a classic masterpiece of algorithm analysis (it is not appropriate to use a classic, it should be a Bible or an epic), and is listed by Scientific American as one of the top 12 scientific masterpieces of the 20th century (and Dirac's quantum mechanics, Einstein's general theory of relativity, von Neumann's of the game theory, etc.). Its highlight lies in its extraordinary mathematical skills, requiring readers to have extremely high mathematical accomplishments. As long as you persevere and endure, once you understand it, your algorithm and programming level will reach a higher level. There is a completely different experience and understanding, which is "Tao".

The book's typography is beautiful (thanks to the author's Tex system) and looks comfortable. The author's writing is very good, the writing is lively and vivid, and the reading is heartwarming (English version). There are many and essential exercises, touching the essence of algorithms and programs. There are answers to almost all the exercises at the back of the book (accounting for 1/4 of the entire book). The analysis methods in the book reflect the author's rigorous style. But the program in this book is not described by the high-level language we are familiar with, but the MIX language designed by the author.

The whole set of books was originally planned to be published in seven volumes, but now there are three volumes: Basic Algorithms, Semi-Numerical Algorithms, Sorting and Searching, and the fourth volume Combination Algorithms has been delayed for 20 years. There is a Chinese version of this book, but readers are advised to choose the English version, because they have learned this level, and there should be no major difficulties in English.

To quote a sentence "In our lifetime, we may see the demise of C++, but Knuth and his art of programming will always remain in our hearts."

2nd place

Original title: Introduction to Algorithms
Chinese name: Introduction to Algorithms
Authors : Thomas H.Cormen, Charles E.Leiserson, Ronald L.Rivest, Clifford Stein
Difficulty: ★★★
Personal evaluation: ★★★★★
Recommendation: ★★★ ★★

This book is commonly known as CLRS (short for author's name), a classic textbook on algorithms, and can be called "Nine Swords of Dugu" in algorithm analysis works. One of the authors, Ronald L. Rivest, received the ACM Turing Award for his contributions to the public-key cryptographic algorithm RSA.

The content of the whole book is comprehensive, the structure is clear, more than 1,000 pages in 6 parts contain the main content of the data structure algorithm. The author uses diagrams and pseudocodes to explain each algorithm, which is easy to understand without losing rigor. English is relatively simple and the language is fluent. Therefore, compared with TAOCP, this book is more suitable for beginners and does not require readers to have strong mathematics. Background and extensive programming experience.

The exercises in the book are reasonably arranged and the difficulty is moderate. The answers to all the exercises are available on the Internet. There are also videos of the author's lectures in the book at MIT, which are rich in resources. It is worth noting that there is a Chapter notes at the end of each chapter in the book. , it's good to have a look at the history and look at the author's recommended material (if you can find it).

3rd place

Original title: Data Structures and Algorithms Analysis in C/C++/JAVA
Chinese name: Data Structures and Algorithms Analysis - C Language Description/C++ Description/Java Language Description
Author : Mark Allen Weiss
Difficulty: ★★★
Personal Evaluation: ★★ ★★★
Recommendation: ★★★★★

"Data Structures and Algorithms Analysis in C" (Data Structures and Algorithms Analysis in C) Second Edition, written by Mark Allen Weiss, translated by Feng Shunxi of Tianjin Normal University, Machinery Industry Press. One of Professor Weiss's trilogy of classic textbooks on data structures, the C language description version, which is the book, is known as one of the 30 most important computer textbooks in the 20th century. Mark Allen Weiss (Mark? Ellen? Weiss), obtained a doctorate in computer science from Princeton University in 1987, under the tutelage of the famous algorithm master Robert Sedgewick, and is currently a professor at the School of Computing and Information Science at Florida International University. He served as the chair of the National AP (Advanced Placement) Exam Computer Science Committee (2000-2004). His main research interests are data structures, algorithms and pedagogy. The Chinese version of the translation is of good quality. Too many mathematical formulas. The code in the book can be downloaded from the Internet, but there is no output and no answers to the exercises.

"Data Structures and Algorithms Analysis in C++" (Data Structures and Algorithms Analysis in C++) third edition, written by Mark Allen Weiss, translated by Zhang Huaiyong, etc., Machinery Industry Press. One of the trilogy of classic data structure textbooks by Professor Weiss.

"Data Structures and Algorithms Analysis in Java" (Data Structures and Algorithms Analysis in Java) Second Edition, written by Mark Allen Weiss, translated by Feng Shunxi of Tianjin Normal University, Machinery Industry Press. One of the trilogy of classic data structure textbooks by Professor Weiss.

fourth place

Original title: Introduction to The Design & Analysis of Algorithms
Chinese name: Fundamentals of Algorithm Design and Analysis
Author : Anany Levitin
Difficulty: ★★★
Personal Evaluation: ★★★★
Recommendation: ★★★★

Another way of writing an algorithm book, with methods as the main line, such as Brute-Force, Divide-and-Conquer, Greedy techniques, there are many interesting exercises in the book

the fifth place

Original title: Data Structures, Algorithms, and Applications in C++
Chinese name: Data Structures Algorithms and Applications-C++ Language Description
Author : Sartej Sahni Translator: Wang Shilin, etc.
Difficulty: ★★★
Personal Evaluation: ★★★
Recommendation: ★★ ★

Many people recommend this book, but I personally think this book is not very good. The translation level of the Chinese version is not satisfactory. The data structure and algorithm section has covered everything that should be said, but there is nothing outstanding. On the contrary, C++ has said a lot. The level of code is not so good.

Judging from ACCU's evaluation, the implementation in the book is far from BOOST and STL. However, this book has many practical problems, you can take a look.

sixth place

Original title: Programming Pearls
Chinese name: Programming Pearls
Author : Jon Bentley
Difficulty: ★★★
Personal evaluation: ★★★★
Recommendation: ★★★★

Programming Zhuji: Learning algorithms requires not only heavyweight inner strength methods such as Alogrithms, Introduction to Algorithms, but also lightweight and light physical methods such as "The Beauty of Programming" and "Programming Zhuji".

A few years ago, weren't Baidu interview questions like "Give you 1 billion numbers, find the largest n number" or "Give you 1 billion numbers, find the number with the most occurrences" that were popular on the Internet? After reading this book, you will know how to solve it.

Compared with "The Beauty of Programming", the examples in this book are slightly less technical, but more practical.

seventh

Original Title: Algorithm Design
Chinese Name: Algorithm Design
Author : Jon Kleinberg / Éva Tardos
Difficulty: ★★★
Personal Evaluation: ★★★★
Recommendation: ★★★★

Algorithm Design is a classic book on algorithm design, which I read a long time ago. Personally, I think "Algorithm Design" is better than "Introduction to Algorithms".

The paper is better and looks much more comfortable.
"Introduction to Algorithms" is too detailed and often loses focus if tangled with details. "Algorithm design" only has the key process proof, but it is easy to grasp the key points.
I read "Algorithm Design" after reading "Introduction to Algorithms". I still enjoyed this book when I read "Algorithm Design", and also consolidated my knowledge.

eight place

Original Title: Algorithm Art and Informatics Competition
Chinese Name: Algorithm Art and Informatics Competition
Author: Liu Rujia
Difficulty : ★★★
Personal Evaluation: ★★★★
Recommendation: ★★★★

Algorithm Art and Informatics Competition: If the introduction to algorithms is the magic of the Nine Yangs, then this book is undoubtedly the classic of the Nine Yins.

This book is specially written for students who participate in some programming competitions such as ACM, and is called "black book" by Jianghu people. It talks about some algorithms, data structures, and some number theory and computational geometry commonly used in programming competitions. Although I do not engage in competitions, I have benefited a lot from this book.

ninth

Original title: Algorithms in C, Algorithms in C++, Algorithms in Java
Chinese name: Algorithm I-IV (C implementation), Algorithm V (C implementation) (C++ implementation) (Java implementation)
Author: Robert Sedgewick
Difficulty: ★★★
Personal evaluation: ★★★★★
Recommendation: ★★★★

Robert Sedgwick was a student of Knuth and is now a professor at Princeton. These are three series. Different from the algorithm described above in pseudocode, this book uses the popular languages ​​C, C++, and Java to describe it. So which language should I choose? From the point of view of algorithms, there is no difference in any high-level language. Although there will be some subtle differences at the language-related level when implementing algorithms, they have little impact.

Personally recommend C++, because the price is the cheapest :). A feature of this book is that the examples are well-made and the code is clear. Chinese version available

tenth

Original Title: Algorithms Design Techniques and Analysis
Chinese Name: Algorithm Design Techniques and Analysis
Author : MHAlsuwaiyel
Difficulty: ★★★★
Personal Evaluation: ★★★★
Recommendation: ★★★★

This book is an important supplement to probability algorithms and approximation algorithms that are rarely covered in general algorithm books.

eleventh

Original Title:
Chinese Title: Algorithms and Data Structures
Author : Fu Qingxiang and Wang Xiaodong
Difficulty: ★★★
Personal Evaluation: ★★★★
Recommendation: ★★★★

This is one of the best data structure and algorithm books written by the Chinese, and it is very detailed. The last three chapters: Complexity, Parallel Algorithms, Advanced Topics have some interesting stuff and are a good introduction to these advanced topics.

12th

Original title:
Chinese name: Data structure (C language version)
Author: Yan Weimin Wu Weimin
Difficulty : ★★★
Personal evaluation: ★★★
Recommendation: ★★★

No explanation needed.

Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325726192&siteId=291194637