merge sort
void merge(int arr[], int l, int m, int r)
{
int n=r-l+1,temp[n];
int i=l,j=m+1,k=0;
while(i<=m and j<= r)
{
if(arr[i]< arr[j]){
temp[k++] = arr[i++];
else
temp[k++] = arr[j++];
}
while(i<=m)
temp[k++] = arr[i++];
while(j<=r)
temp[k++] = arr[j++];
int ind= 0;
for(int i=l;i<=m;i++)
arr[i] = temp[ind++];
for(int j=m+1;j<=r;j++)
arr[j] = temp[ind++];
}
void mergeSort(int arr[], int l, int r)
{
if(l<r)
{
int mid = (r+l)/2;
mergeSort(arr,l,mid);
mergeSort(arr,mid+1,r);
merge(arr,l,mid,r);
}
}