Merge Sort is a divide-and-conquer algorithm that was invented by John von Neumann in 1945. It works by recursively splitting the array into halves until each sub-array contains a single element, and then merging those sub-arrays back together in sorted order.
#include<stdio.h> void mergeSort(int[], int, int); int main(){ int n, arr[50]; printf("Enter the number of elements: "); scanf("%d",&n); printf("Enter %d elements: ",n); for(int i=0;i<n;i++){ scanf("%d",&arr[i]); } mergeSort(arr, 0, n-1); printf("Sorted array: "); for(int i=0;i<n;i++){ printf("%d ",arr[i]); } return 0; } void mergeSort(int arr[], int left, int right){ int mid, i, j, k, temp[50]; if(left<right){ mid = (left+right)/2; mergeSort(arr, left, mid); mergeSort(arr, mid+1, right); i = left; j = mid+1; k = left; while(i<=mid && j<=right){ if(arr[i]<=arr[j]){ temp[k++] = arr[i++]; }else{ temp[k++] = arr[j++]; } } while(i<=mid){ temp[k++] = arr[i++]; } while(j<=right){ temp[k++] = arr[j++]; } for(i=left;i<=right;i++){ arr[i] = temp[i]; } } }
Sample Input and Output:
Enter the number of elements: 7
Enter 7 elements: 6 3 12 9 15 21 18
Sorted array: 3 6 9 12 15 18 21
Enter the number of elements: 7
Enter 7 elements: 6 3 12 9 15 21 18
Sorted array: 3 6 9 12 15 18 21