Advertisement
marjan_mu

Simple merge sort

Jan 21st, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.03 KB | None | 0 0
  1. #include<stdio.h>
  2. #define MAX 999999999
  3.  
  4.  
  5. void merge(int A[],int p,int q,int r)
  6. {
  7.     int n1 = q-p+1;
  8.     int n2 = r-q;
  9.     int i,j;
  10.     int L[n1],R[n2];
  11.     for(i=1 ; i<=n1; i++)
  12.     {
  13.         L[i] = A[p+i-1];
  14.     }
  15.     for(j=1; j<=n2; j++)
  16.     {
  17.         R[j] = A[q+j];
  18.     }
  19.  
  20.     L[n1+1]=MAX;
  21.     R[n2+1]=MAX;
  22.     i=1,j=1;
  23.     int k;
  24.     for(k=p;k<=r;k++)
  25.     {
  26.         if(L[i]<=R[j])
  27.         {
  28.             A[k]= L[i];
  29.             i++;
  30.         }
  31.         else
  32.         {
  33.             A[k] = R[j];
  34.             j++;
  35.         }
  36.     }
  37. }
  38. void mergesort(int A[],int p,int r)
  39. {
  40.     int i;
  41.     if(p<r)
  42.     {
  43.         int q = (p+r)/2;
  44.         mergesort(A,p,q);
  45.         mergesort(A,q+1,r);
  46.         merge(A,p,q,r);
  47.  
  48.     }
  49.     return ;
  50.  
  51. }
  52.  
  53.  
  54. int main()
  55. {
  56.     int A[100],n,i;
  57.     printf("Enter the number of elements: ");
  58.     scanf("%d",&n);
  59.     for(i=1;i<=n;i++)
  60.     {
  61.         scanf("%d",&A[i]);
  62.     }
  63.     mergesort(A,1,n);
  64.  
  65.     for(i=1;i<=n;i++)
  66.     {
  67.         printf("%d\t",A[i]);
  68.     }
  69.     return 0;
  70. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement