Learn what are the different types of data structure algorithms with its implementation, examples and applications in real world programming.

We have enlisted and explained different types of algorithms used in data structures and have implemented them in C programming language.

#### What is a Data Structure?

A data structure can be viewed as a systematic way to organise data so that it can be used efficiently. The choice of an appropriate data structure can greatly affect the efficiency of any given program.

It is a logical way of storing data on your computer or hard drive which also, in a way, defines the retrieval process.

**Must Read: Data Structures C Programs**

#### What is an Algorithm?

An algorithm is a procedure having well-defined steps for solving a particular problem. The data stored in data structures are manipulated by using different algorithms, so the study of data structures includes the study of algorithms.

Let us now have a look at different types of data structure algorithms that are extensively used to solve different computational problems.

## Different Types of Data Structure Algorithms

#### 1. Greedy Algorithm

A greedy algorithm works by taking a decision that appears the **best at the moment**, without thinking about the future.

This algorithm follows the **problem-solving heuristic** which means that a local optimum is chosen at every step in the hope of getting a global optimum.

It is not necessary that a greedy algorithm will always produce an optimal solution. The decision once taken in never reconsidered.

For finding a global optimum using a greedy algorithm, numerous steps may be required. The greedy algorithms are used to solve combinatorial problems in mathematical optimisation.

These algorithms produce good solutions for some mathematical problems, but not for every problem. There are different variations to greedy algorithms such as:

- Pure greedy algorithms
- Relaxed greedy algorithms
- Orthogonal greedy algorithms

The different types of greedy algorithm implementations are as follows:

**Djikstra’s algorithm for single source shortest path****Kruskal’s algorithm for minimum spanning tree****Prim’s algorithm for minimum spanning tree**- Huffman’s algorithm
- Network routing

#### 2. Backtracking Algorithm

The backtracking algorithms are used in constraint satisfaction problems which are normally **computational problems**.

This algorithm is a **trial and error** process. In some problems, we are given several options. One of these options might lead to the optimum solution.

We take any one of these several options and try to see if we get the optimum solution. If the optimum solution is not obtained, the action is undone and another option is selected.

This option is again tried and tested. The above steps are repeated or retracted if we do not reach the solution.

The backtracking algorithm is, therefore, **meta – heuristic**. It does not guarantee to find solutions to a given problem in a bounded amount of time.

The different types of backtracking algorithm implementations are as follows:

**N – queens problem**- Sudoku game
- Knapsack problem
- Peg solitaire

#### 3. Divide and Conquer Algorithm

A divide and conquer algorithm is a type of **multi – branched recursion**. This algorithm solves a problem by dividing the original problem into smaller chunks which are similar subproblems.

The solutions of these smaller sub problems are later combined to get the solution of the given original problem.

The algorithm works by breaking down the original problem recursively. The divide and conquer algorithms, therefore, are based on **recursion **method.

This algorithm has led to the discovery of many algorithms such as merge sorting, quick sorting, karatsuba algorithm and much more.

The different types of divide and conquer algorithm implementations are as follows:

**Merge sort****Quick sort**- Binary sort
**Tower of hanoi problem**

#### 4. Randomised Algorithm

In randomised algorithms, random numbers are used to make some decisions. These randomised algorithms are approximated using a **pseudo – random number generator**.

The running time of these algorithms depends on the input as well as the random numbers that are generated.

The algorithm stops its execution if the generated random number is an optimum solution. The running time may vary for the same input data.

The two major algorithms are **Monte Carlo algorithm** and **Las Vegas algorithm**. The different types of randomized algorithm implementations are as follows:

**Quick sort**- Closest pair problems

#### 5. Brute Force Algorithm

The brute force algorithm is also known as **exhaustive search** and **generate and test technique**. It is a general problem solving and one of the easiest data structure algorithms.

It is the simplest way of finding the solution to a given problem. Brute – force basically means that you will have to go through all the possible solutions one after another until you find the optimum solution.

There is absolutely no relation between brute force algorithms and backtracking algorithms.

The brute – force algorithm is one of the simplest algorithms but the time that is taken by the algorithm to get an optimum solution may be comparatively higher.

So, if time is not a constraint, brute force technique is a good option. Therefore, this algorithm is used only when the problem size is small because if the problem set is large then the speed of execution will be really slow.

The different types of brute – force algorithm implementations are as follows:

**Linear search**- Cryptography

#### 6. Simple Recursive Algorithm

Recursion is a problem-solving process in which a problem is defined in terms of itself. The problem is solved by repeatedly breaking it into smaller problems, which are similar in nature to the original problems.

The smaller problems are solved and their results are applied to get the final solution to the original problem.

So, in recursive algorithms, the original problem is divided into smaller and similar problem. Recursion, therefore, proceeds by breaking a problem into smaller versions of the same problem.

The smallest version is actually the base case and it can be solved without recursion. After the base case solution is obtained, the function will stop calling itself and starts returning results.

Recursion is one of the most confusing data structure algorithms. However, if the base case is understood properly, then it becomes easier.

The different types of recursive algorithm implementations are as follows:

**Find fibonacci series using recursion****Raise number to positive power using recursion****Factorial of a number using recursion**

#### 7. Branch and Bound Algorithm

The branch and bound algorithms are applied for general real value problems as well as discrete and combinatorial optimisation problems.

This algorithm consists of a systematic enumeration of candidate solutions by means of **state space search**.

The algorithm depends on the efficient estimation of the upper and lower bounds of a branch or a region of the search space.

The primary task of a branch and bound algorithm is to maintain the lowest cost path to a goal found so far, and its cost.

Once a solution has been found by the branch and bound algorithm, the method generates a sequence of ever – improving solutions.

The first solution is remembered by the algorithm and set as a benchmark. It returns the original or the first solution if no solution is found after the algorithm completes the whole search space.

The different types of branch and bound algorithm implementations are as follows:

**Travelling salesman problem**- False noise analysis
- Nearest neighbour search

Let us discuss more on data structure algorithms in C programming in the comment section below. Find more information on data structures on Geeks For Geeks.

This is the best article that I found on the internet on basic algorithms tutorials. Thank you so much!

I was searching for this differentiation between differeny algorithms in DS. This is by far the best explanation that I have come across.

This article is just amazing. So many types of algorithms! I was not aware of it before.

This was really an exhaustive and a complete explanation for different data structure algorithms used in programming. Thanks a lot.