Book Details :
LanguageEnglish
Pages828
FormatPDF
Size32.7 MB

# Data Structures and Algorithms Made Easy 5th Edition by Karumanchi

Data Structures and Algorithms Made Easy 5th Edition Data Structures and Algorithms Puzzles by Narasimha Karumanchi | PDF Free Download.

## Data Structures and Algorithms Contents

Introduction

1. Variables
2. Data Types
3. Data Structures
5. What is an Algorithm?
6. Why the Analysis of Algorithms?
7. The goal of the Analysis of Algorithms
8. What is Running Time Analysis?
9. How to Compare Algorithms
10. What is the Rate of Growth?
11. Commonly Used Rates of Growth
12. Types of Analysis
13.  Asymptotic Notation
14. Big-O Notation [Upper Bounding Function]
15. Omega-Q Notation [Lower Bounding Function]
16. Theta-Θ Notation [Order Function]
17. Important Notes
18. Why is it called Asymptotic Analysis?
19. Guidelines for Asymptotic Analysis
20. Simplyfying properties of asymptotic notations
21. Commonly used Logarithms and Summations
22. Master Theorem for Divide and Conquer Recurrences
23. Divide and Conquer Master Theorem: Problems & Solutions
24. Master Theorem for Subtract and Conquer Recurrences
25. Variant of Subtraction and Conquer Master Theorem
26. Method of Guessing and Confirming
27. Amortized Analysis
28. Algorithms Analysis: Problems & Solutions

Recursion and Backtracking

1. Introduction
2.  What is Recursion?
3. Why Recursion?
4. Format of a Recursive Function
5. Recursion and Memory (Visualization)
6. Recursion versus Iteration
7. Notes on Recursion
8.  Example Algorithms of Recursion
9. Recursion: Problems & Solutions
10. What is Backtracking?
11. Example Algorithms of Backtracking
12. Backtracking: Problems & Solutions

1. What is a Linked List?
4. Arrays Overview
5. Comparison of Linked Lists with Arrays & Dynamic Arrays
9. A Memory-efficient Doubly Linked List
11. Skip Lists
12. Linked Lists: Problems & Solutions

Stacks

1. What is a Stack?
2.  How Stacks are used
4. Applications
5. Implementation
6. Comparison of Implementations
7. Stacks: Problems & Solutions

Queues

1. What is a Queue?
2. How are Queues Used?
4. Exceptions
5. Applications
6.  Implementation
7. Queues: Problems & Solutions

Trees

1.  What is a Tree?
2. Glossary
3. Binary Trees
4. Types of Binary Trees
5. Properties of Binary Trees
6. Binary Tree Traversals
7. Generic Trees (N-ary Trees)
8. Threaded Binary Tree Traversals (Stack or Queue-less Traversals)
9. Expression Trees
10. XOR Trees
11. Binary Search Trees (BSTs)
12. Balanced Binary Search Trees
14. Other Variations on Trees

Priority Queues and Heaps

1. What is a Priority Queue?
3. Priority Queue Applications
4. Priority Queue Implementations
5. Heaps and Binary Heaps
6.  Binary Heaps
7. Heapsort
8. Priority Queues [Heaps]: Problems & Solutions

1. Introduction
2. Equivalence Relations and Equivalence Classes
4. Applications
6.  Fast UNION Implementation (Slow FIND)
7.  Fast UNION Implementations (Quick FIND)
8. Summary
9. Disjoint Sets: Problems & Solutions

Graph Algorithms

1. Introduction
2. Glossary
3. Applications of Graphs
4. Graph Representation
5. 9.5 Graph Traversals
6. Topological Sort
7. Shortest Path Algorithms
8. Minimal Spanning Tree
9. Graph Algorithms: Problems & Solutions

Sorting

1. What is Sorting?
2. Why is Sorting Necessary?
3. Classification of Sorting Algorithms
4. Other Classifications
5. Bubble Sort
6. Selection Sort
7. Insertion Sort
8. Shell Sort
9. Merge Sort
10. Heap Sort
11. Quick Sort
12. Tree Sort
13. Comparison of Sorting Algorithms
14. Linear Sorting Algorithms
15. Counting Sort
16. Bucket Sort (or Bin Sort)
18. Topological Sort
19. External Sorting
20. Sorting: Problems & Solutions

Searching

1. What is Searching?
2. Why do we need Searching?
3. Types of Searching
4.  Unordered Linear Search
5. Sorted/Ordered Linear Search
6. Binary Search
7. Interpolation Search
8. Comparing Basic Searching Algorithms
9. Symbol Tables and Hashing
10. String Searching Algorithms
11. Searching: Problems & Solutions

Selection Algorithms [Medians]

1. What is Selection Algorithms?
2. Selection by Sorting
3. Partition-based Selection Algorithm
4. Linear Selection Algorithm - Median of Medians Algorithm
5. Finding the K Smallest Elements in Sorted Order
6. Selection Algorithms: Problems & Solutions

Symbol Tables

1. Introduction
2. What are Symbol Tables?
3. Symbol Table Implementations
4. Comparison Table of Symbols for Implementations
5. Hashing
6. What is Hashing?
7. Why Hashing?
9. Understanding Hashing
10. Components of Hashing
11. Hash Table
12. Hash Function
14. Collisions
15. Collision Resolution Techniques
16. Separate Chaining
18. Comparison of Collision Resolution Techniques
19. 1How Hashing Gets O(1) Complexity?
20.  Hashing Techniques
21. Problems for which Hash Tables are not suitable
22. Bloom Filters
23. Hashing: Problems & Solutions

String Algorithms

1. Introduction
2. String Matching Algorithms
3. Brute Force Method
4. Rabin-Karp String Matching Algorithm
5. String Matching with Finite Automata
6. KMP Algorithm
7. Boyer-Moore Algorithm
8. Data Structures for Storing Strings
9. Hash Tables for Strings
10. Binary Search Trees for Strings
11. Tries
12. Ternary Search Trees
13.  Comparing BSTs, Tries and TSTs
14. Suffix Trees
15. String Algorithms: Problems & Solutions
16. Algorithms Design Techniques
17. Introduction
18. Classification
19. Classification by Implementation Method
20. Classification by Design Method
21. Other Classifications

Greedy Algorithms

1. Introduction
2. Greedy Strategy
3. Elements of Greedy Algorithms
4. Does Greedy Always Work?
6. Greedy Applications
7. Understanding Greedy Technique
8. Greedy Algorithms: Problems & Solutions

Divide and Conquer Algorithms

1.  Introduction
2. What is the Divide and Conquer Strategy?
3. Does Divide and Conquer Always Work?
4. Divide and Conquer Visualization
5. Understanding Divide and Conquer
6.  Advantages of Divide and Conquer
7. Disadvantages of Divide and Conquer
8. Master Theorem
9. Divide and Conquer Applications
10. Divide and Conquer: Problems & Solutions

Dynamic Programming

1. Introduction
2. What is Dynamic Programming Strategy?
3. Properties of Dynamic Programming Strategy
4. Can Dynamic Programming Solve All Problems?
5. Dynamic Programming Approaches
6. Examples of Dynamic Programming Algorithms
7. Understanding Dynamic Programming
8. Longest Common Subsequence
9. Dynamic Programming: Problems & Solutions

Complexity Classes

1. Introduction
2.  Polynomial/Exponential Time
3. What is a Decision Problem?
4. Decision Procedure
5. What is a Complexity Class?
6. Types of Complexity Classes
7. Reductions
8. Complexity Classes: Problems & Solutions

Miscellaneous Concepts

1. Introduction
2. Hacks on Bit-wise Programming
3. Other Programming Questions

## Preface to Data Structures and Algorithms PDF

Please hold on! I know many people typically do not read the Preface of a book. But I strongly recommend that you read this particular Preface. It is not the main objective of this book to present you with the theorems and proofs on data structures and algorithms.

I have followed a pattern of improving the problem solutions with different complexities (for each problem, you will find multiple solutions with different, and reduced, complexities).

Basically, it’s an enumeration of possible solutions. With this approach, even if you get a new question, it will show you a way to think about the possible solutions. You will find this book useful for interview preparation, competitive exams preparation, and campus interview preparations.

As a job seeker, if you read the complete book, I am sure you will be able to challenge the interviewers.

If you read it as an instructor, it will help you to deliver lectures with an approach that is easy to follow, and as a result, your students will appreciate the fact that they have opted for Computer Science / Information Technology as their degree.

This book is also useful for Engineering degree students and Masters's degree students during their academic preparations. In all the chapters you will see that there is more emphasis on problems and their analysis rather than on theory.

In each chapter, you will first read about the basic required theory, which is then followed by a section on problem sets.

In total, there are approximately 700 algorithmic problems, all with solutions. If you read the book as a student preparing for competitive exams for Computer Science / Information Technology, the content covers all the required topics in full detail.

While writing this book, my main focus was to help students who are preparing for these exams. In all the chapters you will see more emphasis on problems and analysis rather than on theory.

In each chapter, you will first see the basic required theory followed by various problems. For many problems, multiple solutions are provided with different levels of complexity.

We start with the brute force solution and slowly move toward the best solution possible for that problem.

For each problem, we endeavor to understand how much time the algorithm takes and how much memory the algorithm uses.