Get in the game and learn essential computer algorithms by solving competitive programming problems, in the fully revised second edition of the bestselling original. (Still no math required!)
Knowing how to design algorithms will take you from being a good programmer to a great programmer. This completely revised second edition teaches you how to design your own rocket-fast, right-for-the-task algorithms—minus the proofs and complex math. Forget the useless pseudocode and played-out examples you’ve seen in other books. Author and award-winning educator Dan Zingaro draws problems straight from online programming competitions to rigorously teach you all of the heavyweights you need to know, like hash tables, recursion, trees, graphs, and heaps. As he guides you to the perfect algorithmic solution for each unique programming puzzle, you’ll build up a toolkit of go-to algorithms for quickly and correctly solving any problem you come across.
The second edition features several entirely new chapters on dynamic programming and randomized algorithms, as well as more effective problems and enhanced explanations. Code examples are provided using the C language.
This is a great book that approaches algorithmic thinking from the competitive programming angle. The book uses the C programming language to explore and solve interesting problems that match the theme of each chapter, from past programming contests. Most of the problems in it are way harder than the typical SV SWE interview questions. If your motivation for reading the book is to ace coding interviews, you’ll perhaps be better served by reading more pedestrian books.
I was recently asked to review this book by the author. The book teaches algorithms based on problems from various programming competitions. It covers a lot of the basic algorithms and data structures you would see in a typical programming contest.
The author manages to motivate the various algorithms and data structures very well by showing why more naive solutions fail to solve the problems. He then proceeds to flesh out the faster solution by iterating on the existing code. I believe this approach helps in showing exactly why algorithms and data structures are useful and also demonstrates a way to approach these kinds of problems. This is something a lot of other textbooks fail to do.
Overall I think it's a very good book. It is not as comprehensive as a university course on algorithms, but presents the solutions in a very nice way. I would recommend it to someone who is familiar with programming but has not yet been introduced to algorithms and data structures.
The programming language used in this book is C. The author compiles a variety set of problems and inspires the readers on solving the problems step by step.
The contents include eight parts: 1. hash tables 2. trees and recursion 3. memoization and dynamic programming 4. graphs and BFS 5. shortest paths in weighted graphs 6. heaps and segment trees 7. heaps and segment trees 8. union-find
This is a book good for reference and revisiting time after time.
“Myślenie algorytmiczne jak rozwiązywać problemy za pomocą algorytmów” to kolejna informatyczna książka, po którą sięgnęłam. Jej autorem jest Daniel Zingaro, wykładowca Uniwersytetu w Toronto, zanany z nowoczesnego i przystępnego podejścia do nauczania informatyki.
Autor uważa, że możemy rozwijać swoje umiejętności programistyczne tylko w dwóch przypadkach - kiedy wykonujemy ćwiczenia i mamy dobrego trenera. W “Myśleniu algorytmicznym” autor wciela się właśnie w rolę naszego nauczyciela. Nie znajdziemy tu listy zagadnień do “wykucia” ale praktyczne podejście do rozwiązania problemów programistycznych przy pomocy algorytmów. W każdym z rozdziałów znajdziemy zadania, a autor pokaże nam co już wiemy i czego potrzebujemy do rozwiązania ich. Zadania i problemy przedstawione w książce pochodzą z konkursów programistycznych i często są modyfikacjami klasycznych zagadnień. Kod przedstawiony jest w języku C.
“Myślenie algorytmiczne “jest skierowane głównie do programistów, którzy chcą się nauczyć myśleć algorytmiczne i dzięki temu rozwiązywać złożone problemy, w sposób jak najbardziej optymalny. Po dokładnym przepracowaniu tej książki zyskamy nie tylko wiedzę, ale i praktyczne umiejętności, które przydadzą się w pracy z kodem.
Jeśli lubicie uczyć się przez działanie i chcecie spojrzeć na programowanie z nowej perspektywy to “Myślenie algorytmiczne “jest zdecydowanie dla was.