// merge sort...
#include<stdio.h>
#include<conio.h>
void main()
{
int no, i, j, l=0, mid, r, count=-1, temp, flag=0;
int arr[20], a[20], b[20];
clrscr();
printf("how many element you want to enter: ");
scanf("%d",&no);
r = no-1;
printf("\nenter element one by one: \n");
for(i=0; i<no; i++)
{
printf("enter %d element: ",i+1);
scanf("%d",&arr[i]);
}
mid = (l+r) / 2;
for(i=0; i<=mid; i++)
{
a[i] = arr[i];
count++;
}
for(i=0; i<mid; i++)
{
flag=0;
for(j=0; j<mid-i; j++)
{
if(a[j] > a[j+1])
{
flag=1;
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
if(flag==0)
{
break;
}
}
for(i=0; i<r-count; i++)
{
b[i] = arr[i+mid+1];
}
for(i=0; i<r-count-1; i++)
{
flag=0;
for(j=0; j<r-count-1-i; j++)
{
if(b[j] > b[j+1])
{
flag=1;
temp = b[j];
b[j] = b[j+1];
b[j+1] = temp;
}
}
if(flag==0)
{
break;
}
}
l=0; r=0; i=0;
while((l <= mid+1) && (r <= no-1))
{
if(b[r] < a[l])
{
if(r-1 != no-1)
{
arr[i] = b[r];
i++; r++;
}
else if((r-1 == no-1) && (l != mid))
{
arr[i] = a[l];
i++; l++;
}
}
else if(a[l] < b[r])
{
if(l-1 != mid)
{
arr[i] = a[l];
i++; l++;
}
else if((l-1 == mid) && (r-1 != no-1))
{
arr[i] = b[r];
i++; r++;
}
}
else
{
arr[i] = a[l];
i++; l++;
arr[i] = b[r];
i++; r++;
}
}
printf("\n\nsorted element:");
for(i=0; i<no; i++)
{
printf("%d ",arr[i]);
}
getch();
}
No comments:
Post a Comment