# merge sort algorithm

merge sort

void mergeSort(int arr[], int l, int r) { if (l < r) { // Same as (l+r)/2, but avoids overflow for // large l and h int m = (l+r)/2; // Sort first and second halves mergeSort(arr, l, m); mergeSort(arr, m+1, r); merge(arr, l, m, r); } }

void merge(int arr[], int l, int m, int r) { int i=l; int j=m+1; int k=0; int temp[r-l+1]; while( i<=m && 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 y=l; for(int i=0;i<(r-l+1);i++) { arr[y]=temp[i]; y++; } }