Code:
#include<stdio.h>
#include<conio.h>
void mergesort(int [],int,int);
void merge(int [],int,int,int);
void main()
{
int data[50],i,no_elements;
printf("\n enter no. of elements :");
scanf("%d",&no_elements);
printf("\n enter elements:");
for(i=0;i<no_elements;i++)
{
scanf("%d",&data[i]);
}
printf("\n entered array:");
for(i=0;i<no_elements;i++)
{
printf("%d",data[i]);
}
mergesort(data,0,no_elements-1);
printf("\n sorted list:");
/*for(i;i<no_elements;i++)
{
printf("%d",*(data+i));
} */
}
void mergesort(int a[],int i,int j)
{
int mid;
if(i>=j)
return ;
else
{
mid=i+j/2;
mergesort(a,i,mid);
mergesort(a,mid+1,j);
merge(a,i,j,mid);
}
}
void merge(int a[],int i,int j,int mid)
{
int arbitary[100],start1,start2,k,last;
start1=i;
start2=mid+1;
last=j;
k=i;
while(start1<=mid && start2<=last)
{
if(a[start1]<=a[start2])
{
arbitary[k]=a[start1];
k++;
start1++;
}
else
{
arbitary[k]=a[start2];
k++;
start2++;
}
}
if(start1>mid)
{
while(start2<=last)
arbitary[k++]=a[start2++];
}
else if(start2>j)
{
while(start1<=mid)
arbitary[k++]=a[start1++];
}
}
why it is causing a stack fault..??
Comment