### What are Data Structures and Algorithm and why are they important?

In simple terms, Data Structures are simply a way to store the data in a format that is easy to organise and retrieve.

Algorithms are simply a function or a ways to use data structure to write our program.

### But, does it mean, if you study all the data structure and algorithms, you will become good in programming?

It might not be true. Because, in addition to knowing about DS and Algo, you need to know how to apply them to make the program more efficiently.

Below index has around 85+ topics on DS and Algo that will make you an expert in programming. It took me almost 6 months and many sleepless nights to complete all the articles. Any suggestions are always welcome.

Chapter 1: Introduction to algorithm and their types.

Chapter 2: Performance analysis of an algorithm: Space Complexity

Chapter 3: Performance analysis of an algorithm: Time Complexity

Chapter 4: Introduction to Asymptotic Notations

Chapter 5: Asymptotic Notation Big O

Chapter 6: Asymptotic Notation Big Omega and Theta

### Sorting! First question arises, why do we need sorting when there are various inbuilt sorting functions?

From the point of interview, it is important because, the interviewer might ask you to sort when a un-sorted array is given.

About the inbuilt functions, they are efficient for less number of input, but when the input size increases, we need to implement our custom sorting algorithms. For example, consider big companies with multiple complex data, those needs to be sorted according to the location, time. Inbuilt functions will not be usable here. Hence there is a need to implement sorting algorithms.

**Below are list of sorting algorithms that we shall be studying:**

Sorting Algorithm 1: Bubble sort

Sorting Algorithm 2: Selection Sort

Sorting Algorithm 3: Insertion Sort

Sorting Algorithm 4: Merge Sort

Sorting Algorithm 5: Quick Sort

Sorting Algorithm 6: Pigeonhole Sort

Sorting Algorithm 7: 3-Way Quicksort (Dutch National Flag) algorithm

Sorting Algorithm 8: Cocktail Sort

Sorting Algorithm 9: Radix Sort

Sorting Algorithm 10: Bucket Sort

Sorting Algorithm 11: Counting Sort

Sorting Algorithm 12: Shell Sort

Sorting algorithm 13: Topological Sort

Sorting algorithm 14: Comb Sort

Searching Algorithm 1: Linear Search

Searching Algorithm 2: Binary Search

Searching Algorithm 3: Jump Search

Searching Algorithm 4: Interpolation Search

Searching Algorithm 5: Exponential Search

Searching Algorithm 6: Ternary Search

Data structure tutorial 1: Introduction to Stack Data structure and Implementation using arrays

Data structure tutorial 3: Singly Linked List explanation with Implementation in C

Data structure tutorial 4: Doubly Linked List [DLL] with explanation with implementation in C++

Data structure tutorial 5: Circular Singly Linked List with explanation with implementation in C

Data structure tutorial 6: Circular Doubly Linked List explanation and Implementation in C++

Data structure tutorial 8: Queue Data Structure implementation using linked list in C

Data structure tutorial 10: Implementation of Circular Queue using Linked List in C++

Tree data structure tutorial 1. Tree Data Structure Introduction

Tree data structure tutorial 2. Introduction to Binary Tree

Tree data structure tutorial 3. Binary Tree Traversal

Tree data structure tutorial 4. Binary Search Tree Introduction

Tree data structure tutorial 5. Implementation of BST in C++

Tree data structure tutorial 6. Implementation of Binary tree in C++

Tree data structure tutorial 7. TRIE Data structure

Tree data structure tutorial 8. Heaps

Tree data structure tutorial 9. Priority Queue

Tree data structure tutorial 10. AVL tree introduction and it’s implementation

Tree data structure tutorial 11. Introduction to Segment Trees

Tree data structure tutorial 12: Performing minimum Range query in Segment Tree and implementation

Tree data structure tutorial 13. Lazy propagation of segment trees with example

Tree data structure tutorial 14. Fenwick trees and implementation

Graph data structure tutorial 1. Graph Introduction

Graph data structure tutorial 2. Graph Representation Adjacency Matrix

Graph data structure tutorial 3. Graph Representation Adjacency List and implementation in C++

Graph data structure tutorial 4. Graph Traversal

Graph data structure tutorial 5. Graph Traversal using Stack and Queue

Graph data structure tutorial 6. Bipartite graph

Graph data structure tutorial 7. Graph colouring problem

Graph data structure tutorial 8. Isomorphic Graph

Graph data structure tutorial 9. Euler Graph

Graph data structure tutorial 10. Hamiltonian Graph

Introduction to Brute force approach with example

Introduction to Recursion with stack frame and recursion tree

Introduction to Dynamic Programming with example

Introduction to Backtracking Approach with example

Introduction to Greedy Technique with example

Introduction to Two pointer approach with example code

Mnimum Spanning Tree tutorial 1. Introduction to minimum spanning tree

Minimum Spanning Tree tutorial 2: Introduction to Kruskal’s algorithm and Implementation

Minimum Spanning Tree tutorial 3. Introduction to prims algorithm and its implementation

Finding shortest path algorithm tutorial 2. Introduction to Dijkstra’s Algorithm with implementation

String matching algorithms tutorial 2: Introduction to Rabin Karp algorithm with implementation.

String matching algorithms tutorial 3: Introduction to Boyer Moore algorithm and implementation

Knapsack Problem tutorial 1: Fractional knapsack tutorial with implementation

Knapsack Problem tutorial 2: 0/1 knapsack problem tutorial with implementation

Introduction to P, NP, NP hard, NP Complete

Kadane Algorithm explanation with implementation in C++

Travelling salesman problem with implementation

Total number of ways to get denomination of coins.

Job Sequencing with deadline Problem