Thursday 4 August 2016

WAP to implement Merge Sort.

//WAP to implement Merge Sort.
#include <stdio.h>
#include <stdlib.h>
#include<conio.h>

#define MAX_ARY 10

void merge_sort(int x[], int end, int start);

clrscr();

int main(void) 
      {
        int ary[MAX_ARY];
        int j = 0;

        printf("\n\nEnter the elements to be sorted: \n");
        for(j=0;j<MAX_ARY;j++)
        scanf("%d",&ary[j]);/* array before mergesort */

        printf("Before :");
              for(j = 0; j < MAX_ARY; j++)
                printf(" %d", ary[j]);
                printf("\n");

        merge_sort(ary, 0, MAX_ARY - 1);
        printf("After Merge Sort :");/* array after mergesort */
              for(j = 0; j < MAX_ARY; j++)
                printf(" %d", ary[j]);
                printf("\n");
       getch();
      }

/* Method to implement Merge Sort*/void merge_sort(int x[], int end, int start) 
      {
        int j = 0;
        const int size = start - end + 1;
        int mid = 0, mrg1 = 0, mrg2 = 0, executing[MAX_ARY];
              if(end == start)
         return;
             mid = (end + start) / 2;

merge_sort(x, end, mid);
merge_sort(x, mid + 1, start);
      for(j = 0; j < size; j++)
        executing[j] = x[end + j];
        mrg1 = 0;
        mrg2 = mid - end + 1;
              for(j = 0; j < size; j++) 
               {
                 if(mrg2 <= start - end)
                   if(mrg1 <= mid - end)
                     if(executing[mrg1] > executing[mrg2])
                       x[j + end] = executing[mrg2++];
                        else
                          x[j + end] = executing[mrg1++];
                           else
                            x[j + end] = executing[mrg2++];
                             else
                              x[j + end] = executing[mrg1++];
                 }
      }

No comments:

Post a Comment