Books On Algorithms
Programmers and Software engineers need to know the algorithms in Computer Science to be able to write efficient and correct code. Learning algorithms is essential for your career.
Algorithms In A Nutshell
Creating robust software requires the use of efficient algorithms, but programmers seldom think about them until a problem occurs. Algorithms in a Nutshell describes a large number of existing algorithms for solving a variety of problems, and helps you select and implement the right algorithm for your needs — with just enough math to let you understand and analyze algorithm performance.
With its focus on application, rather than theory, this book provides efficient code solutions in several programming languages that you can easily adapt to a specific project. Each major algorithm is presented in the style of a design pattern that includes information to help you understand why and when the algorithm is appropriate.
- Sorting Algorithms [Bucket Sort, Heap Sort, Insertion Sort, Merge Sort, Quicksort, Selection Sort]
- Searching Algorithms [AVL Binary Search Tree, Binary Search Tree, Bloom Filter, Hash-based Search]
- Graph Algorithms [Bellman-Ford, Breadth-first Search, Depth-first Search, Dijkstra’s Algorithm, Floyd-Warshall, Prim’s Algorithm]
- Path Finding in Artificial Intelligence [AlphaBeta, A* Search, Minimax, Negmax]
- Network Flow Algorithms [Edmands-Karp, Ford-Fulkerson]
- Computational Geometry [Convex Hull Scan, Line Sweep, Voronoi Diagrams]
- Spatial Tree Structures [Kd-Tree, Nearest Neighbor Search, Quadtrees, Range Queries, R-Tree
Algorithm Implementations in C, C++, Python and Java.
GitHub: https://github.com/heineman/algorithms-nutshell-2ed
Learning Algorithms
When it comes to writing efficient code, every software professional needs to have an effective working knowledge of algorithms. In this practical book, author George Heineman (Algorithms in a Nutshell) provides concise and informative descriptions of key algorithms that improve coding. Software developers, testers, and maintainers will discover how algorithms solve computational problems creatively.
Each chapter builds on earlier chapters through eye-catching visuals and a steady rollout of essential concepts, including an algorithm analysis to classify the performance of every algorithm presented in the book. At the end of each chapter, you’ll get to apply what you’ve learned to a novel challenge problem — simulating the experience you might find in a technical code interview.
With this book, you will:
- Examine fundamental algorithms central to computer science and software engineering
- Learn common strategies for efficient problem solving — such as divide and conquer, dynamic programming, and greedy approaches
- Analyze code to evaluate time complexity using big O notation
- Use existing Python libraries and data structures to solve problems using algorithms
- Understand the main steps of important algorithms
- Data Structures include Linked List, Binary Heap, and Binary Tree
- Data Types include Bag, Stack, Queue, Symbol Table, Priority Queue, Graph, and Indexed Min Priority Queue
- Sorting Algorithms include Selection Sort, Insertion Sort, Merge Sort, Quicksort, Heap Sort, Tim Sort
- Graph Algorithms include Depth First Search, Breadth First Search, Cycle Detection, Topological Sort, Dijkstra’s Algorithm, Bellman-Ford, Floyd-Warshall
Algorithm Implementations in Python.