Merge Sort Program in C

Previous
Next
#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];
    	}
}
Previous
Next

Add Comment

Courses Enquiry Form