# Sorting in Data Structures - Types of Sorting Algorithms ( With Examples )

## Sorting in Data Structures: An Overview

We have already learned about**searching in data structures**. We saw that if the data is sorted, it becomes easy to find the required element. Searching can be optimized to a very high level if data is stored in a sorted manner.

In this **DSA tutorial**, we are going to understand sorting, various types of sorting algorithms, etc. To further enhance your understanding and application of sorting concepts, consider enrolling in the best **Data Structures and Algorithms Course**, where you can gain comprehensive insights into effective **data structure **utilization for improved problem-solving and time management.

## What is a Sorting Algorithm in Data Structures?

In simple words, Sorting refers to arranging data in a particular format. Sorting algorithms in data structures refer to the methods used to arrange data in a particular order mostly in numerical or lexicographical order.When we have a large amount of data, it can be difficult to deal with it, especially when it is arranged randomly. In such cases, sorting becomes crucial. It is necessary to sort data to make searching easier. Sorting algorithms can help in organizing data to make it more accessible to work with and even speed up processing times for larger amounts of data.

## Types of Sorting Algorithms in Data Structures

- In-place Sorting and Not-in-place Sorting

Sorting algorithms may require some extra space for comparison and temporary storage of a few data elements. There are two main types of sorting algorithms based on how they rearrange elements in memory
- In-place Sorting

These algorithms rearrange the elements within the array being sorted, without using any additional space or memory. In other words, the algorithm operates directly on the input array, modifying its content in place. Common examples of in-place sorting algorithms include:

- Not-in-place Sorting

These algorithms require space that is more than or equal to the elements being sorted to store intermediate results. Common examples of not-in-place sorting algorithms include:

**Read More - Data Structure Interview Questions for Freshers**

- Stable and Unstable Sorting Algorithm

- Stable Sorting Algorithm

It maintains the relative order of elements with equal values in the original data set i.e. if two elements have the same value, the algorithm will sort them in the same order as they appear in the original data set. Some examples of stable sorting algorithms are Merge Sort, Insertion Sort, and Tim Sort.

- Unstable Sorting Algorithm

These algorithms do not guarantee to maintain the relative order of elements with equal values in the original data set i.e. the order in which elements with the same value appear in the sorted output may not be the same as their order in the original data set. Some examples of unstable sorting algorithms are Quick Sort, Heap Sort, and Selection Sort.

- Adaptive and Non-Adaptive Sorting Algorithm

- Adaptive Sorting Algorithm

These algorithms are adaptive because they can take advantage of the partially sorted nature of some input data to reduce the amount of work required to sort the data. For example, suppose a portion of the input data is already sorted. In that case, an adaptive sorting algorithm can skip over that portion of the data and focus on sorting the remaining elements. Some examples are insertion sort, bubble sort, and quicksort.
- Non-Adaptive Sorting Algorithm

These algorithms are non-adaptive because they do not take advantage of any partial ordering of the input data. They try to force every single element to be re-ordered to confirm whether they are sorted or not. Some examples are selection sort, merge sort, and heap sort.
- Comparison and Non-Comparison-based Sorting Algorithm

- Comparison-based Based Sorting Algorithms

These compare elements of the data set and determine their order based on the result of the comparison. Examples include bubble sort, insertion sort, quicksort, merge sort, and heap sort.
- Non-Comparison based Sorting Algorithms

They are the sorting algorithms that sort the data without comparing the elements. Examples include radix sort, bucket sort, and counting sort.
## Sorting Algorithms in Data Structure

### 1.) Quick Sort

Quick Sort is a divide-and-conquer method that divides an array into two sub-arrays, one with elements fewer than the pivot and one with elements more than the pivot. It operates by choosing a "pivot" element.We'll see this algorithm in detail in the section, **Quick Sort in Data Structures**.

### 2.) Bubble Sort

Until the entire list is sorted, Bubble Sort iteratively goes through the list, compares nearby elements, and swaps them if they are out of order.We'll see this algorithm in detail in the section, **Bubble Sort in Data Structures**.

### 3.) Merge Sort

A divide-and-conquer technique that separates the input array into smaller sub-arrays, sorts them, and then combines the sorted sub-arrays to create a final sorted array.We'll see this algorithm in detail in the section, **Merge Sort in Data Structures.**

### 4.) Insertion Sort

It inserts each element of the array into its proper place.We'll see this algorithm in detail in the section, **Insertion Sort in Data Structures**.

### 5.) Selection Sort

It repeatedly locates the smallest element in the array's unsorted portion and inserts it at the start. Until the full array is sorted, this is done.We'll see this algorithm in detail in the section, **Selection Sort in Data Structures**.

### 6.) Heap Sort

The input array is initially transformed into a binary heap data structure by heap sort. The greatest element from the heap, which is always at the root, is then continually removed, and the heap is rebuilt until the array is sorted.We'll see this algorithm in detail in the section, **Heap Sort in Data Structures**.

### 7.) Radix Sort

Integers are sorted using the non-comparative Radix Sort algorithm, which groups digits by their place value and sorts them from least to most significant.We'll see this algorithm in detail in the section, **Radix Sort in Data Structures**.

### 8.) Bucket Sort

It divides the input array into a defined number of buckets, distributes the items across the buckets, sorts each bucket, and then concatenates the sorted buckets to get the sorted array.We'll see this algorithm in detail in the section, **Bucket Sort in Data Structures**.

## Some other Sorting algorithms

- Shell sort
- Tim Sort
- Comb Sort
- Pigeonhole sorting
- Cycle Sort
- Cocktail Sort
- Strand sort
- Bitonic Sort
- Stooge Sort
- Tag Sort
- Tree sort
- Cartesian Sort
- Odd-Even Sort / Brick Sort
- 3-way Merge Sort
- Gnome sort
- Cocktail shaker sort

##### Summary

So here, we got introduced to sorting, sorting algorithms, and their types. We know that sorting is a very important concept in computer programming. The world today is a world of data. Extracting useful information from tons of data requires highly efficient sorting algorithms. Therefore, we must know the workings of the popular sorting algorithms. For more information, you can check our**DSA Certification Course**.