rootUser

Merge Sort 10.12.15

May 26th, 2016
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include<stdio.h>
  2. #include<limits.h>
  3.  
  4. int a[1000];
  5. int n ;
  6.  
  7. void input();
  8. void output();
  9. void Merge_Sort(int [] , int , int);
  10. void Merge(int[] , int , int , int);
  11.  
  12.  
  13. int main()
  14. {
  15.  
  16.      input();
  17.      Merge_Sort(a,1,n);
  18.      output();
  19.  
  20. }
  21.  
  22. void input()
  23. {
  24.      printf("How many numbers:");
  25.      scanf("%d",&n);
  26.  
  27.      printf("Insert numbers:\n");
  28.  
  29.      int i;
  30.  
  31.      for(i=1 ; i<=n ; i++)
  32.      {
  33.          scanf("%d",&a[i]);
  34.      }
  35. }
  36.  
  37. void Merge_Sort(int arr[],int mn , int mx)
  38. {
  39.      if(mn < mx)
  40.      {
  41.           int mid = ((mn + mx) / 2);
  42.  
  43.           Merge_Sort(arr , mn , mid);
  44.           Merge_Sort(arr , mid+1 , mx);
  45.           Merge(arr , mn , mid , mx) ;
  46.      }
  47. }
  48.  
  49. void Merge(int arr[] , int mn , int mid , int mx)
  50. {
  51.      int n1=mid - mn + 1 ;
  52.      int n2=mx-mid ;
  53.  
  54.      int L[n1 + 1] , R[n2 + 1];
  55.  
  56.      for(int i=1 ; i<=n1 ; i++)
  57.      {
  58.           L[i] = arr[mn + i -1 ] ;
  59.      }
  60.  
  61.      for(int j=1 ; j<=n2 ; j++)
  62.      {
  63.           R[j] = arr[mid + j];
  64.      }
  65.  
  66.      L[n1 + 1] = INT_MAX ;
  67.      R[n2 + 1] = INT_MAX ;
  68.  
  69.        int i=1 , j=1 ;
  70.  
  71.      for(int k=mn ; k<=mx ; k++)
  72.      {
  73.           if(L[i]<R[j])
  74.           {
  75.                a[k]=L[i];
  76.                i++;
  77.           }
  78.           else
  79.           {
  80.                a[k]=R[j];
  81.                j++;
  82.           }
  83.      }
  84. }
  85.  
  86.  
  87. void output()
  88. {
  89.      printf("\nSorted array:");
  90.  
  91.      for(int i=1 ; i<=n ; i++)
  92.      {
  93.           printf("%d ",a[i]);
  94.      }
  95. }
Add Comment
Please, Sign In to add comment