#include <stdio.h>
#include <stdlib.h>
#define MAX 20
void display(int a[], int n){
int i;
printf("\n Elements in array: ");
for( i=0; i<n; i++)
printf(" %d ", a[i]);
}
void merge(int ary[], int left,int mid, int right){
int tmpary[MAX];
int i=left, j=mid+1, k=left;
while( (i<=mid) && (j<=right) ){
if( ary[i] < ary[j])
tmpary[k++] = ary[i++];
else
tmpary[k++] = ary[j++];
}
while( i<=mid )
tmpary[k++] = ary[i++];
while( j<=right )
tmpary[k++] = ary[j++];
for( i=left; i<=right; i++)
ary[i] = tmpary[i];
}
void sort(int ary[], int left,int right){
int mid = (left+right)/2;
if( left>=right)
return;
sort( ary, left, mid);
sort( ary, mid+1, right);
merge( ary, left, mid, right);
}
int main(){
int a[20];
int n, i;
printf("\n Enter total number of elements in array (max. %d): ", MAX);
scanf("%d", &n);
if( n < 0)
printf("UNDERFLOW \n");
else if( n > MAX)
printf("OVERFLOW \n");
else{
printf("\n Enter item(s) one by one\n");
for( i=0; i<n; i++){
printf(" Enter item no %d : ",i);
scanf("%d", &a[i]);
}
printf("\n Before Sorting");
display(a,n);
sort( a, 0, n-1);
printf("\n After Sorting");
display(a,n);
printf("\n ");
}
system("pause");
return 0;
}
Outputs