c - trying this merge sort... but it's not working... can anyone find the error? -
i'm having problem c program perform merge sort on user-defined array. when run program, it's taking array input, abruptly stops after , shows error 255. algorithm mycodeschool.org. here's code:
#include<stdio.h> #include<stdlib.h> void merge(int *a, int *left,int *right,int n, int ln, int rn) { int i,j,k; i=j=k=0; while(i<ln&&j<rn) { if(left[i]<=right[j]) { a[k]=left[i]; i++; } else { a[k]=right[j]; j++; } k++; } while(i<ln) { a[k]=a[i]; k++; i++; } while(j<rn) { a[k]=a[j]; k++; j++; } } void mergesort(int *a, int n) // partition { int mid,i,*left,*right; if(n<=1) return; mid=n/2; left=(int *)malloc(sizeof(int)*mid); right=(int *)malloc(sizeof(int)*(n-mid)); for(i=0;i<mid;i++) left[i]=a[i]; for(i=mid;i<n;i++); right[i-mid]=a[i]; mergesort(left,mid); mergesort(right,(n-mid)); merge(a,left,right,n,mid,n-mid); } int main() { int *a,n,i; printf("enter size of array: \t"); scanf("%d",&n); a=(int *)malloc(sizeof(int)*n); printf("\nenter array elements :\n"); for(i=0;i<n;i++) scanf("%d",(a+i)); mergesort(a,n); printf("the sorted array is:\n"); for(i=0;i<n;i++) printf("%d",*(a+i)); return 0; }
shoud be
while(i<ln) { a[k]=left[i]; k++; i++; } while(j<rn) { a[k]=right[j]; k++; j++; }
and
for(i=mid;i<n;i++);
remove ;
Comments
Post a Comment