Merge sort

Write a program to sort elements of an array in ascending order using merge sort.

#include<stdio.h>
#define size 10
void partition(int a[],int,int);
void merge(int a[],int,int,int);
void print(int*,int);
int main()
{
	int a[size] = {40,100,90,10,30,20,80,70,60,50},n;
	n = sizeof(a)/sizeof(a[0]);
	print(a,n);
	partition(a,0,n-1);
	print(a,n);
	return 0;
}
void print(int*a,int n)
{
	int i;
	for(i = 0;i < n;i++)
	{
		printf("%d ",a[i]);
	}
	printf("\n");
}
void partition(int a[],int min,int max)
{
	int mid;
	if(min<max)
	{
		mid=(min+max)/2;
		partition(a,min,mid);
		partition(a,mid+1,max);
		merge(a,min,mid,max);
	}
}
void merge(int a[],int min,int mid,int max)
{
	int temp[size];
	int i,j,k;
	i = j = min;
	k = mid+1;
	while(j <= mid && k <= max)
	{
		if(a[j] <= a[k])
		{
			temp[i] = a[j];
			i++,j++;
		}
		else
		{
			temp[i] = a[k];
			i++,k++;
		}
	}
	while(j <= mid)
	{
		temp[i] = a[j];
		i++,j++;
	}
	while(k <= max)
	{
		temp[i] = a[k];
		i++,k++;
	}
	for(i=min;i<=max;i++)
	{
		a[i] = temp[i];
	}
}

Output

40 100 90 10 30 20 80 70 60 50
10 20 30 40 50 60 70 80 90 100