Sorting of array in C++
Sorting of Array in C++ Language
On this page, we will look into a coding question where we will learn how to sort the array in the C++ programming language. There are many sorting techniques to sort the array-like quick sort, merge sort, bubble sort, and insertion sort them is scripted below.
Here on this page, we are going to discuss the selection for sorting an array in C++.
Algorithm :
- Take the size of the array from the user.
- Declare an array of given input size.
- Take the input of all elements of the array.
- Now run a for loop from 0 to size-1.
- And for every element check it from all the next elements to it. If the element is greater than swap that number.
- In this way the array will get sorted in ascending order.
1. Via Bubble Sort
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n;
cout<<"Enter the size of array: "; cin>>n;
int a[n];
cout<<"\nEnter the elements: ";
for(int i=0; i<n; i++) cin>>a[i];
for(int i=0; i<n; i++)
{
for(int j=i+1; j<n; j++) { if(a[i]>a[j])
{
int temp = a[i];
a[i] = a[j];
a[j] = temp;
}
}
}
cout<<"\nArray after swapping: ";
for(int i=0; i<n; i++)
cout<<a[i]<<" ";
return 0;
}Output:
Enter the size of array: 5
Enter the elements: 1 3 2 5 4
Array after swapping: 1 2 3 4 5
2. Via Insertion Sort
#include
void insertionSort(int arr[], int n) {
for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
j--;
}
arr[j + 1] = key;
}
}
void printArray(int arr[], int n) {
for (int i = 0; i < n; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int n = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, n);
insertionSort(arr, n);
std::cout << "Sorted array: ";
printArray(arr, n);
return 0;
}
Output:
Original array: 64 25 12 22 11 Sorted array: 11 12 22 25 64
- The insertionSort function that takes an array arr and its size n. It iterates through the array, starting from the second element (index 1), and compares each element with the elements before it. If an element is smaller, it shifts the larger elements to the right until it finds the correct position to insert the current element.
- The printArray function is used to display the elements of the array. In the main function, we initialize an array, print the original array, call the insertionSort function to sort the array, and then print the sorted array.
3. Via Merge Sort
Run
#include < iostream>
// Merge two sorted subarrays into a single sorted subarray
void merge(int arr[], int left[], int leftSize, int right[], int rightSize) {
int i = 0; // Index for the left subarray
int j = 0; // Index for the right subarray
int k = 0; // Index for the merged array
while (i < leftSize && j < rightSize) {
if (left[i] <= right[j]) {
arr[k] = left[i];
i++;
}
else {
arr[k] = right[j];
j++;
}
k++;
}
// Copy the remaining elements of the left subarray, if any
while (i < leftSize) {
arr[k] = left[i];
i++;
k++;
}
// Copy the remaining elements of the right subarray, if any
while (j < rightSize) {
arr[k] = right[j];
j++;
k++;
}
}
// Merge sort implementation
void mergeSort(int arr[], int size) {
if (size <= 1)
return;
int mid = size / 2;
// Create left and right subarrays
int left[mid];
int right[size - mid];
// Copy data to left and right subarrays
for (int i = 0; i < mid; i++) {
left[i] = arr[i];
}
for (int i = mid; i < size; i++) {
right[i - mid] = arr[i];
}
// Recursively sort the left and right subarrays
mergeSort(left, mid);
mergeSort(right, size - mid);
// Merge the sorted subarrays
merge(arr, left, mid, right, size - mid);
}
// Print the elements of an array
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {
99,
78,
88,
25,
26
};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, size);
mergeSort(arr, size);
std::cout << "Sorted array: ";
printArray(arr, size);
return 0;
}
Output:
Original array: 99 78 88 25 26 Sorted array: 25 26 78 88 99
- The mergeSort function is the implementation of the merge sort algorithm. It recursively divides the array into two halves until the base case of size 1 is reached. It then merges the sorted subarrays using the merge function.
- The printArray function is used to display the elements of the array. In the main function, we initialize an array, print the original array, call the mergeSort function to sort the array, and then print the sorted array.
4. Via Quick Sort
Run
#include <iostream>
// Function to swap two elements
void swap(int& a, int& b) {
int temp = a;
a = b;
b = temp;
}
// Partition the array and return the pivot index
int partition(int arr[], int low, int high) {
int pivot = arr[high]; // Choose the rightmost element as the pivot
int i = low - 1; // Index of the smaller element
for (int j = low; j <= high - 1; j++) {
if (arr[j] <= pivot) {
i++;
swap(arr[i], arr[j]);
}
}
swap(arr[i + 1], arr[high]);
return i + 1; // Return the pivot index
}
// Quick sort implementation
void quickSort(int arr[], int low, int high) {
if (low < high) {
int pivotIndex = partition(arr, low, high);
// Recursively sort the left and right subarrays
quickSort(arr, low, pivotIndex - 1);
quickSort(arr, pivotIndex + 1, high);
}
}
// Print the elements of an array
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {55, 65, 32, 12, 19};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, size);
quickSort(arr, 0, size - 1);
std::cout << "Sorted array: ";
printArray(arr, size);
return 0;
}
Output:
Original array: 55 65 32 12 19 Sorted array: 12 19 32 55 65
- The swap function to swap two elements in the array. The partition function chooses the rightmost element as the pivot and partitions the array into two subarrays – elements smaller than the pivot and elements greater than the pivot. It returns the index of the pivot element.
- The quickSort function is the implementation of the quick sort algorithm. It recursively selects a pivot, partitions the array, and then recursively sorts the left and right subarrays.
- The printArray function is used to display the elements of the array. In the main function, we initialize an array, print the original array, call the quickSort function to sort the array, and then print the sorted array.
4. Via Heap Sort
Run
#include <iostream>
// Function to heapify a subtree rooted at index i
void heapify(int arr[], int size, int rootIndex) {
int largest = rootIndex; // Assume the root as the largest element
int leftChild = 2 * rootIndex + 1; // Left child index
int rightChild = 2 * rootIndex + 2; // Right child index
// If the left child is larger than the root
if (leftChild < size && arr[leftChild] > arr[largest]) {
largest = leftChild;
}
// If the right child is larger than the largest so far
if (rightChild < size && arr[rightChild] > arr[largest]) {
largest = rightChild;
}
// If the largest element is not the root
if (largest != rootIndex) {
std::swap(arr[rootIndex], arr[largest]);
// Recursively heapify the affected sub-tree
heapify(arr, size, largest);
}
}
// Heap sort implementation
void heapSort(int arr[], int size) {
// Build a max-heap
for (int i = size / 2 - 1; i >= 0; i--) {
heapify(arr, size, i);
}
// Extract elements from the heap one by one
for (int i = size - 1; i > 0; i--) {
std::swap(arr[0], arr[i]); // Move current root to the end
heapify(arr, i, 0); // Reduce the heap size and heapify the root
}
}
// Print the elements of an array
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {64, 25, 12, 22, 11};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, size);
heapSort(arr, size);
std::cout << "Sorted array: ";
printArray(arr, size);
return 0;
}
Output:
Original array: 76 90 73 56 32 Sorted array: 32 56 73 76 90
- The heapify function to heapify a subtree rooted at index rootIndex. It compares the root element with its children and swaps them if necessary to maintain the max-heap property.
- The heapSort function is the implementation of the heap sort algorithm. It builds a max-heap from the array, then repeatedly extracts the maximum element (root) and performs heapify to maintain the max-heap property.
- The printArray function is used to display the elements of the array. In the main function, we initialize an array, print the original array, call the heapSort function to sort the array, and then print the sorted array.
5. Via Count Sort
Run
#include <iostream>
#include <algorithm>
// Get the maximum element from the array
int getMax(int arr[], int size) {
int max = arr[0];
for (int i = 1; i < size; i++) {
if (arr[i] > max) {
max = arr[i];
}
}
return max;
}
// Counting sort for a specific digit
void countingSort(int arr[], int size, int exp) {
const int RADIX = 10;
int output[size];
int count[RADIX] = {0};
// Count the occurrences of each digit
for (int i = 0; i < size; i++) {
count[(arr[i] / exp) % RADIX]++;
}
// Calculate the cumulative count
for (int i = 1; i < RADIX; i++) {
count[i] += count[i - 1];
}
// Build the output array
for (int i = size - 1; i >= 0; i--) {
output[count[(arr[i] / exp) % RADIX] - 1] = arr[i];
count[(arr[i] / exp) % RADIX]--;
}
// Copy the output array to the original array
for (int i = 0; i < size; i++) {
arr[i] = output[i];
}
}
// Radix sort implementation
void radixSort(int arr[], int size) {
int max = getMax(arr, size);
// Perform counting sort for each digit
for (int exp = 1; max / exp > 0; exp *= 10) {
countingSort(arr, size, exp);
}
}
// Print the elements of an array
void printArray(int arr[], int size) {
for (int i = 0; i < size; i++) {
std::cout << arr[i] << " ";
}
std::cout << std::endl;
}
int main() {
int arr[] = {76, 90, 73, 56, 32};
int size = sizeof(arr) / sizeof(arr[0]);
std::cout << "Original array: ";
printArray(arr, size);
radixSort(arr, size);
std::cout << "Sorted array: ";
printArray(arr, size);
return 0;
}
Output:
Original array: 64 25 12 22 11 Sorted array: 11 12 22 25 64
- The getMax function to get the maximum element from the array. The countingSort function performs counting sort for a specific digit by counting the occurrences of each digit, calculating the cumulative count, and building the output array.
- The radixSort function is the implementation of the radix sort algorithm. It gets the maximum element from the array, then performs counting sort for each digit from the least significant digit to the most significant digit.
- The printArray function is used to display the elements of the array. In the main function, we initialize an array, print the original array, call the radixSort function to sort the array, and then print the sorted array.
Prime Course Trailer
Related Banners
Get PrepInsta Prime & get Access to all 200+ courses offered by PrepInsta in One Subscription
Get over 200+ course One Subscription
Courses like AI/ML, Cloud Computing, Ethical Hacking, C, C++, Java, Python, DSA (All Languages), Competitive Coding (All Languages), TCS, Infosys, Wipro, Amazon, DBMS, SQL and others

Login/Signup to comment