A hands-on, problem-based introduction to building algorithms and data structures to solve problems with a computer.
Algorithmic Thinking will teach you how to solve challenging programming problems and design your own algorithms. Daniel Zingaro, a master teacher, draws his examples from world-class programming competitions like USACO and IOI. You'll learn how to classify problems, choose data structures, and identify appropriate algorithms. You'll also learn how your choice of data structure, whether a hash table, heap, or tree, can affect runtime and speed up your algorithms; and how to adopt powerful strategies like recursion, dynamic programming, and binary search to solve challenging problems.
Line-by-line breakdowns of the code will teach you how to use algorithms and data structures
Each problem in this book is available on a programming-judge website. You'll find the site's URL and problem ID in the description. What's better than a free correctness check?
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.