#include<stdio.h>
#include<conio.h>
void array_partition(int[], int, int);
void merge_sort(int[],int,int,int);
int main()
{
int arr[50] , n , i ;
clrscr();
printf("Enter number of elements : ");
scanf("%d", &n);
for( i=0 ; i<n ; i++ )
{
arr[i] = rand()%32767 ;
}
printf("Array elements before sort : \n");
for( i=0 ; i<n ; i++ )
{
printf("%d\t",arr[i]);
}
printf("\n\n");
array_partition(arr,0,n-1);
printf("Array elements after sort : \n");
for( i=0 ; i<n ; i++ )
{
printf("%d\t", arr[i]);
}
printf("\n\n");
return 0;
}
void array_partition(int arr[], int low, int high)
{
int mid;
if(low<high)
{
mid=(low+high)/2;
array_partition(arr,low,mid);
array_partition(arr,mid+1,high);
merge_sort(arr,low,mid,high);
}
}
void merge_sort(int arr[],int low,int mid,int high)
{
int i,j,k,l,b[20];
l=low;
i=low;
j=mid+1;
while((l<=mid)&&(j<=high))
{
if(arr[l]<=arr[j])
{
b[i]=arr[l];
l++;
}
else
{
b[i]=arr[j];
j++;
}
i++;
}
if(l>mid)
{
for(k=j;k<=high;k++)
{
b[i]=arr[k];
i++;
}
}
else
{
for(k=l;k<=mid;k++)
{
b[i]=arr[k];
i++;
}
}
for(k=low;k<=high;k++)
{
arr[k]=b[k];
}
}
No Comments