C++ program to implement Merge sort.

#include<iostream>
#include<conio.h>
using namespace std;
void mergesort(int *,int,int);
void merge(int *,int,int,int);
int a[20],i,n,b[20];
int main()
{
    cout <<"\n Enter Total Number of Elements: ";
    cin >> n;
    cout <<"Enter the Elements: ";
    for(i=0; i<n; i++)
        cin >> a[i];
    mergesort(a,0,n-1);
    cout <<" \n Numbers After Sort: \n";
    for(i=0; i<n; i++)
        cout << a[i] << " ";
    return 0;
} void mergesort(int a[],int i,int j) { int mid; if(i<j) { mid=(i+j)/2; mergesort(a,i,mid); mergesort(a,mid+1,j); merge(a,i,mid,j); } } void merge(int a[],int low,int mid ,int high) { int h,i,j,k; h=low; i=low; j=mid+1; while(h<=mid && j<=high) { if(a[h]<=a[j]) b[i]=a[h++]; else b[i]=a[j++]; i++; } if( h > mid) for(k=j; k<=high; k++) b[i++]=a[k]; else for(k=h; k<=mid; k++) b[i++]=a[k]; cout <<"\n"; for(k=low; k<=high; k++) { a[k]=b[k]; cout << a[k] <<" "; } }

 OUTPUT:

 Enter Total Number of Elements: 10
Enter the Elements: 10 9 8 7 6 5 4 3 2 1

9 10
8 9 10
6 7
6 7 8 9 10
4 5
3 4 5
1 2
1 2 3 4 5
1 2 3 4 5 6 7 8 9 10
 Numbers After Sort:
1 2 3 4 5 6 7 8 9 10