#include<stdio.h> #include<conio.h> void array_partition(int[], int, int); void merge_sort(int[],int,int,int); int main() { int arr[50] , n , i ; clrscr(); printf(“Enter number of elements : “); scanf(“%d”, &n); for( i=0 ; i<n ; i++ ) { arr[i] = rand()%32767 ; } printf(“Array elements before sort : \n”); for( i=0 ; i<n ; i++ ) { printf(“%d\t”,arr[i]); } printf(“\n\n”); array_partition(arr,0,n-1); printf(“Array elements after sort : \n”); for( i=0 ; i<n ; i++ ) { printf(“%d\t”, arr[i]); } printf(“\n\n”); return 0; } void array_partition(int arr[], int low, int high) { int mid; if(low<high) { mid=(low+high)/2; array_partition(arr,low,mid); array_partition(arr,mid+1,high); merge_sort(arr,low,mid,high); } } void merge_sort(int arr[],int low,int mid,int high) { int i,j,k,l,b[20]; l=low; i=low; j=mid+1; while((l<=mid)&&(j<=high)) { if(arr[l]<=arr[j]) { b[i]=arr[l]; l++; } else { b[i]=arr[j]; j++; } i++; } if(l>mid) { for(k=j;k<=high;k++) { b[i]=arr[k]; i++; } } else { for(k=l;k<=mid;k++) { b[i]=arr[k]; i++; } } for(k=low;k<=high;k++) { arr[k]=b[k]; } } |