📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
1. Introduction
Merge Sort is a divide-and-conquer sorting algorithm that consistently splits a list into two halves. If the list is already singular in nature (only one element), it's considered sorted. Otherwise, each half is recursively sorted and then merged back together.2. Program Overview
1. Divide the list into halves recursively, until each sub-list consists of a single element.
2. Merge these sub-lists iteratively to form sorted lists, until only one sorted list remains.
3. Code Program
#include <iostream>
using namespace std;
// Function for merging two sorted arrays
void merge(int arr[], int l, int m, int r) {
int n1 = m - l + 1;
int n2 = r - m;
int L[n1], R[n2];
// Copy data to temp arrays L[] and R[]
for (int i = 0; i < n1; i++)
L[i] = arr[l + i];
for (int j = 0; j < n2; j++)
R[j] = arr[m + 1 + j];
// Merge the temp arrays back into arr[]
int i = 0, j = 0, k = l;
while (i < n1 && j < n2) {
if (L[i] <= R[j]) {
arr[k] = L[i];
i++;
} else {
arr[k] = R[j];
j++;
}
k++;
}
while (i < n1) {
arr[k] = L[i];
i++;
k++;
}
while (j < n2) {
arr[k] = R[j];
j++;
k++;
}
}
void mergeSort(int arr[], int l, int r) {
if (l < r) {
int m = l + (r - l) / 2;
mergeSort(arr, l, m);
mergeSort(arr, m + 1, r);
merge(arr, l, m, r);
}
}
int main() {
int n;
cout << "Enter the number of elements: ";
cin >> n;
int arr[n];
cout << "Enter the elements: ";
for(int i = 0; i < n; i++) {
cin >> arr[i];
}
mergeSort(arr, 0, n - 1);
cout << "Sorted array: ";
for (int i = 0; i < n; i++)
cout << arr[i] << " ";
cout << endl;
return 0;
}
Output:
Enter the number of elements: 6 Enter the elements: 12 11 13 5 6 7 Sorted array: 5 6 7 11 12 13
4. Step By Step Explanation
1. The 'merge' function handles the task of merging two sorted sub-arrays.
2. The 'mergeSort' function sorts the array by recursively dividing and merging.
3. The 'main' function first takes the array size and elements as input from the user, and then sorts it using 'mergeSort'.
Comments
Post a Comment
Leave Comment