#include <iostream>
using namespace std;

void merge(int *a,int low,int mid,int high){
    int x=mid-low+1;
    int y=high-mid;
    int l[x],r[y];
    for(int i=0;i<x;i++){
        l[i]=a[low+i];
    }
    for(int i=0;i<y;i++){
        r[i]=a[mid+1+i];
    }
    int i=0,j=0,k=low;
    while(i<x && j<y){
        if(l[i]<=r[j]){
            a[k]=l[i];
            i++;
        }
        else{
            a[k]=r[j];
            j++;
        }
        k++;
    }
    while(i<x){
        a[k]=l[i];
        i++;
        k++;
    }
    while(j<y){
        a[k]=r[j];
        j++;
        k++;
    }
}

void mergesort(int *a,int low,int high){
    if(low<high){
        int mid=(low+high)/2;
        mergesort(a,low,mid);
        mergesort(a,mid+1,high);
        merge(a,low,mid,high);
    }
}
int main() {
    int n;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++){
        cin>>a[i];
    }
    mergesort(a,0,n-1);
    for(int i=0;i<n;i++){
        cout<<a[i]<<" ";
    }
    return 0;
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: