C Program to implement Merge Sort using Iterative Approach - BunksAllowed

BunksAllowed is an effort to facilitate Self Learning process through the provision of quality tutorials.

Community

C Program to implement Merge Sort using Iterative Approach

Share This
Source Code
#include<stdio.h> #include<stdlib.h> int main() { int *arr, *temp, i, j, k, n, size, l1, h1, l2, h2; /*l1=lower index of one subarray; l2=lower index of another subarray; h1=higher index of one subarray; h2=higher index of another subarray;*/ printf("Enter the number of elements : "); scanf("%d", &n); arr = (int*) malloc(sizeof(int) * n); temp = (int*) malloc(sizeof(int) * n); printf("\nenter the elements:"); for (i = 0; i < n; i++) { scanf("%d", &arr[i]); } /*l1 lower bound of first pair and so on*/ for (size = 1; size < n; size = size * 2) { l1 = 0; k = 0; /*Index for temp array*/ while (l1 + size < n) { h1 = l1 + size - 1; l2 = h1 + 1; h2 = l2 + size - 1; /* h2 exceeds the limlt of arr */ if (h2 >= n) h2 = n - 1; /*Merge the two pairs with lower limits l1 and l2*/ i = l1; j = l2; while (i <= h1 && j <= h2) { if (arr[i] <= arr[j]) { temp[k++] = arr[i++]; } else { temp[k++] = arr[j++]; } } while (i <= h1) temp[k++] = arr[i++]; while (j <= h2) temp[k++] = arr[j++]; /**Merging completed**/ /*Take the next two pairs for merging */ l1 = h2 + 1; } /*any pair left */ for (i = l1; k < n; i++) temp[k++] = arr[i]; for (i = 0; i < n; i++) arr[i] = temp[i]; } printf("Sorted list is :\n"); for (i = 0; i < n; i++) printf("%d|", arr[i]); return 0; } }

Happy Exploring!

No comments:

Post a Comment

Note: Only a member of this blog may post a comment.