C Programming Code Examples C > Arrays and Matrices Code Examples Program to Merge and Sort Elements of 2 different arrays Program to Merge and Sort Elements of 2 different arrays #include <stdio.h> void Merge(int * , int , int , int ); void MergeSort(int *array, int left, int right) { int middle = (left+right)/2; /* We have to sort only when left<right because when left=right it is anyhow sorted*/ if(left<right) { /* Sort the left part */ MergeSort(array, left, middle); /* Sort the right part */ MergeSort(array, middle + 1, right); /* Merge the two sorted parts */ Merge(array, left, middle, right); } } /* Merge functions merges the two sorted parts */ void Merge(int *array, int left, int middle, int right) { /*to store sorted array*/ int tmp[right - left + 1]; int pos = 0, leftposition = left, rightposition = middle + 1; while (leftposition <= middle && rightposition <= right) { if (array[leftposition] < array[rightposition]) { tmp[pos++] = array[leftposition++]; } else { tmp[pos++] = array[rightposition++]; } } while (leftposition <= middle) tmp[pos++] = array[leftposition++]; while (rightposition <= right) tmp[pos++] = array[rightposition++]; int x; /* Copy back the sorted array to the original array */ for (x = 0; x < pos; x++) { array[x + left] = tmp[x]; } return; } int main() { int size; printf("\n enter the size of an array"); scanf("%d", &size); int array[size]; int x, j, k; printf("\n enter the array elements"); for (x = 0; x < size; x++) { scanf("%d", &array[x]); } /* Calling this functions sorts the array */ MergeSort(array, 0, size - 1); for (x = 0; x < size; x++) { printf("%d ", array[x]); } printf("\n"); return 0; }