Code:
#include <stdio.h>
void msort(int a[], int low, int high,int recursiveDepth);
void merge(int a[], int low, int mid, int high);
int main()
{
int i, low, high, n, a[10];
printf("how many elements");
scanf("%d", &n);
printf("Enter the elements");
for (i = 0; i < n; i++)
scanf("%d", &a[i]);
low = 0;
high = n - 1;
msort(a, low, high,0);
printf("The sorted array is\n");
for (i = 0; i < n; i++)
printf("%d\n", a[i]);
return 0;
}
void msort(int a[], int low, int high,int recursiveDepth)
{
int mid;
if (low < high) {
mid = (low + high) / 2;
printf("%*s: Depth=%d, low=%d, high=%d, mid=%d\n",
recursiveDepth*2, "",
recursiveDepth, low, high, mid );
msort(a, low, mid,recursiveDepth+1);
msort(a, mid + 1, high,recursiveDepth+1);
merge(a, low, mid, high);
}
}
...
$ gcc foo.c
$ ./a.out
how many elements7
Enter the elements1 3 5 7 6 4 2
: Depth=0, low=0, high=6, mid=3
: Depth=1, low=0, high=3, mid=1
: Depth=2, low=0, high=1, mid=0
: Depth=2, low=2, high=3, mid=2
: Depth=1, low=4, high=6, mid=5
: Depth=2, low=4, high=5, mid=4
The sorted array is
1
2
3
4
5
6
7