# Algorithms

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 :

What is an Algorithm?

### Overview:

• Analysis of Algorithms
• Searching
• Sorting
• Greedy Algorithms
• Backtracking
• Divide and Conquer
• Branch and Bound
• Dynamic Programming
• Graph Algorithms

#### Analysis of Algorithms:

1. Asymptotic Analysis
2. Worst, Average and Best Cases
3. Asymptotic Notations
4. Asymptotic Analysis of Loops
5. Space Complexity

#### Searching

1. Linear Search
2. Binary Search
3. Jump Search
4. Interpolation Search
5. Exponential Search
6. Ternary Search
7. Binary Search preferred over Ternary Search

#### Sorting:

1. Selection Sort
2. Bubble Sort
3. Insertion Sort
4. Merge Sort
5. Heap Sort
6. Quicksort
8. Bucket Sort
9. Merge Sort for Linked Lists
10. Sort a nearly sorted array
11. Sort a K sorted array
12. Iterative Quick Sort
13. Quicksort on Singly Linked List
14. Find k closest elements to a given value
15. A Problem in Many Binary Search Implementations
16. Search an element in an almost sorted array
17. Sort array in wave form
18. Binary Insertion Sort
19. Insertion Sort for Singly Linked List
20. Merge Sort for Doubly Linked List

#### Greedy Algorithms:

1. Activity Selection Problem
2. Kruskal Minimum Spanning Tree Algorithm
3. Huffman Coding
4. Prims Minimum Spanning Tree Algorithm
5. Dijkstra Shortest Path Algorithm
6. Job Sequencing Problem

#### Backtracking:

1. Print all permutations of a given string
2. Rat in a Maze
3. N Queen Problem

#### Divide and Conquer:

1. Introduction
2. Write your own pow(a, n)
3. Median of two sorted arrays
4. Count Inversions
5. Strassen’s Matrix Multiplication
6. Quick Sort vs Merge Sort

#### Branch and Bound:

1. Introduction with 0-1 Knapsack
2. Job Assignment Problem
3. N Queen Problem

#### Dynamic Programming:

1. Longest Increasing Subsequence
2. Longest Common Subsequence
3. Min Cost Path
4. Matrix Chain Multiplication
5. 0-1 Knapsack Problem
6. Longest Palindromic Subsequence

All explanations will be added soon….stay tuned