A **programming algorithm** is a computer procedure that is a lot like a recipe (called a procedure) and tells your computer precisely what steps to take to solve a problem or reach a goal.

Algorithms play an important role in the career of a software developer.

### Wondering why algorithms are important?

- Gives you an idea if your program actually solves the problem.
- Gives you an idea about under what circumstances your program will perform well.
- Gives you an idea what parts of the program are important and what parts can be done any old way.

#### Got an idea about the importance, Now let’s have a look at some of the most important algorithms and their usage in real life.

## Graphs:

**Graphs **are used to represent networks. Networks may include paths in a city or telephone network or circuit network. Graphs are also used in social networks like Facebook, LinkedIn,Instagram etc.

There are various processes done in graphs:

- Breadth First Search(BFS)
- Depth First Search(DFS)
- Dijkstra Algorithm
- Floyd Warshall Algorithm

## Dynamic Programming

**Dynamic Programming(DP) **helps in solving enormous,heavyweight programming problem that you can’t imagine solving on your own. DP helps you turn the big problem into small sub problems . Example:

- Longest Common Sequence
- Subset Sum Problem
- 0-1 Knapsack Problem

## Sorting Algorithms

**Sorting Algorithms ** are used to rearrange a given array or list element according to a comparison operator on the elements. Example:

- Quick Sort
- Merge Sort
- Bubble Sort
- Selection Sort

## Searching Algorithms

**Searching Algorithms **are used to check or retrieve an element from any data structure where it is stored. Example:

- Binary Search
- Linear Search
- Interval search
- Fibonacci Search

## Hashing

**Hashing Algorithms **provide you with a one-way technique that you can use to mask your data, with a minimal chance that someone could reverse the hashed value back to the original value. Examples:

- MD5
- SHA-1
- SHA-2
- NTLM
- LANMAN