An Algorithms is a step by step procedure for solving a problem or a finite set of sequence of specified actions for solving a problem or sequence of steps performed by computer to solve a problem. You can define it as easy you can but the sole purpose should remain same.

Algorithms are widely used in IT industry for processing data, calculation, modifying data and much more. Algorithms can be explained in any language, from natural languages like English to programming languages and also using flowcharts.

**Flowcharts:** A flowchart is the graphical representation of an algorithm. Flow chart contain various boxes connected with arrows in order to illustrates a solution model to a given problem.

In this guide you will study various algorithms like Analysis of Algorithms, Searching, Sorting, Greedy Algorithms, Divide and Conquer, Graph Algorithms, Randomized Algorithms, Branch and Bound etc and their practical approach in various languages.

## Algorithms Topics :

### Overview:

- Analysis of Algorithms
- Searching
- Sorting
- Greedy Algorithms
- Backtracking

- Divide and Conquer
- Branch and Bound
- Dynamic Programming
- Graph Algorithms

#### Analysis of Algorithms:

- Asymptotic Analysis
- Worst, Average and Best Cases
- Asymptotic Notations
- Asymptotic Analysis of Loops
- Space Complexity

#### Searching

- Linear Search
- Binary Search
- Jump Search
- Interpolation Search
- Exponential Search
- Ternary Search
- Binary Search preferred over Ternary Search

#### Sorting:

- Selection Sort
- Bubble Sort
- Insertion Sort
- Merge Sort
- Heap Sort
- Quicksort
- Radix Sort
- Bucket Sort
- Merge Sort for Linked Lists
- Sort a nearly sorted array
- Sort a K sorted array
- Iterative Quick Sort
- Quicksort on Singly Linked List
- Find k closest elements to a given value
- A Problem in Many Binary Search Implementations
- Search an element in an almost sorted array
- Sort array in wave form
- Binary Insertion Sort
- Insertion Sort for Singly Linked List
- Merge Sort for Doubly Linked List

#### Greedy Algorithms:

- Activity Selection Problem
- Kruskal Minimum Spanning Tree Algorithm
- Huffman Coding
- Prims Minimum Spanning Tree Algorithm
- Dijkstra Shortest Path Algorithm
- Job Sequencing Problem

#### Backtracking:

- Print all permutations of a given string
- Rat in a Maze
- N Queen Problem

#### Divide and Conquer:

- Introduction
- Write your own pow(a, n)
- Median of two sorted arrays
- Count Inversions
- Strassenâ€™s Matrix Multiplication
- Quick Sort vs Merge Sort

#### Branch and Bound:

- Introduction with 0-1 Knapsack
- Job Assignment Problem
- N Queen Problem

#### Dynamic Programming:

- Longest Increasing Subsequence
- Longest Common Subsequence
- Min Cost Path
- Matrix Chain Multiplication
- 0-1 Knapsack Problem
- Longest Palindromic Subsequence

All explanations will be added soon….stay tuned