#include <stdio.h>
int c[20];
void display(int ub)
{
for (int k = 0; k < ub; k++)
{
printf(" %d ", c[k]);
}
}
void merge(int a[],int lb, int mid, int ub){
int i=lb;
int j = mid+1;
int k = 0;
while(i<=mid && j <= ub){
if(a[i]<=a[j]){
c[k] = a[i];
i++;
k++;
}
else{
c[k]=a[j];
j++;
k++;
}
}
if(i>mid){
while(j<=ub){
c[k] = a[j];
j++;
k++;
}
}
else{
while(i<=mid){
c[k] = a[i];
i++;
k++;
}
}
for ( i = lb,k=0; i <=ub; i++,k++)
{
a[i]=c[k];
}
}
void merge_sort(int a[],int lb, int ub){
int mid;
if(lb<ub){
mid = (lb+ub)/2;
merge_sort(a,lb,mid);
merge_sort(a,mid+1,ub);
merge(a,lb,mid,ub);
}
}
int main()
{
int i;
int a[] = {15, 5, 24, 8, 1, 3, 16, 10, 20};
int ub = sizeof(a) / sizeof(int);
for (i = 0; i < ub; i++)
{
printf(" %d ", a[i]);
}
merge_sort(a, 0, ub - 1);
printf("\n\n");
printf("Displaying array element\n\n");
display(ub);
return 0;
}
Comments
Post a Comment