Program to sort a given list using Merge sort in C language.
#include<stdio.h>
void main()
{
int A[] = {9,1,4,14,4,15,6};
int n = 7;
PrintArray(A,n);
mergeSort(A,0,6);
PrintArray(A,n);
}
void mergeSort(int A[], int low, int high)
{
int mid;
if(low<high)
{
mid = (low + high) /2;
mergeSort(A, low, mid);
mergeSort(A, mid+1, high);
merge(A, mid, low, high);
}
}
void merge(int A[], int mid, int low, int high)
{
int i,j,k,B[100];
i = low ;
j = mid+1;
k = low;
while(i<=mid && j<=high)
{
if(A[i]<A[j])
{
B[k] = A[i];
i++;
k++;
}
else
{
B[k] = A[j];
j++;
k++;
}
}
while (i<=mid)
{
B[k] = A[i];
k++;
i++;
}
while(j<=high)
{
B[k] = A[j];
k++;
j++;
}
for(i=low ; i<=high ; i++)
{
A[i] = B[i];
}
}
void PrintArray(int *A, int n)
{
for( int i=0; i<n; i++)
{
printf("%d,", A[i]);
}
printf("\n");
}
void main()
{
int A[] = {9,1,4,14,4,15,6};
int n = 7;
PrintArray(A,n);
mergeSort(A,0,6);
PrintArray(A,n);
}
void mergeSort(int A[], int low, int high)
{
int mid;
if(low<high)
{
mid = (low + high) /2;
mergeSort(A, low, mid);
mergeSort(A, mid+1, high);
merge(A, mid, low, high);
}
}
void merge(int A[], int mid, int low, int high)
{
int i,j,k,B[100];
i = low ;
j = mid+1;
k = low;
while(i<=mid && j<=high)
{
if(A[i]<A[j])
{
B[k] = A[i];
i++;
k++;
}
else
{
B[k] = A[j];
j++;
k++;
}
}
while (i<=mid)
{
B[k] = A[i];
k++;
i++;
}
while(j<=high)
{
B[k] = A[j];
k++;
j++;
}
for(i=low ; i<=high ; i++)
{
A[i] = B[i];
}
}
void PrintArray(int *A, int n)
{
for( int i=0; i<n; i++)
{
printf("%d,", A[i]);
}
printf("\n");
}