abinash_hstu

Merge Sort

Jan 6th, 2016
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.77 KB | None | 0 0
  1. //Abinash Ghosh(Om)
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <cctype>
  5. #include <cmath>
  6. #include <cstring>
  7. #include <climits>
  8. #include <iostream>
  9. #include <iomanip>
  10. #include <vector>
  11. #include <list>
  12. #include <stack>
  13. #include <queue>
  14. #include <map>
  15. #include <set>
  16. #include <string>
  17. #include <utility>
  18. #include <sstream>
  19. #include <algorithm>
  20. using  namespace  std;
  21.  
  22. #define PI acos(-1.0)
  23. #define MAX 10000007
  24. #define EPS 1e-9
  25. #define mem(a,b) memset(a,b,sizeof(a))
  26. #define gcd(a,b) __gcd(a,b)
  27. #define pb push_back
  28. #define mp make_pair
  29. #define x first
  30. #define y second
  31. #define Sort(x) sort(x.begin(),x.end())
  32. #define FOR(i, b, e) for(int i = b; i <= e; i++)
  33. #define pr(x) cout<<x<<"\n"
  34. #define pr2(x,y) cout<<x<<" "<<y<<"\n"
  35. #define pr3(x,y,z) cout<<x<<" "<<y<<" "<<z<<"\n";
  36. #define READ(f) freopen(f, "r", stdin)
  37. #define WRITE(f) freopen(f, "w", stdout)
  38.  
  39. typedef  long long ll;
  40. typedef  pair <int, int> pii;
  41. typedef  pair <double , double> pdd;
  42. typedef  pair <ll , ll > pll;
  43. typedef  vector <int> vi;
  44. typedef  vector <pii> vpii;
  45. typedef  vector <ll > vl;
  46.  
  47. int data[105];
  48. int L[105],R[105];
  49. void Merge(int p,int q,int r)
  50. {
  51.  
  52.     int n1= q-p+1;
  53.     int n2= r-q;
  54.     FOR(i,1,n1) L[i]=data[p+i-1];
  55.     FOR(j,1,n2) R[j]=data[q+j];
  56.     L[n1+1]=R[n2+1]=MAX;
  57.     int i=1,j=1;
  58.     FOR(k,p,r)
  59.     {
  60.         if(L[i]<=R[j])data[k]=L[i++];
  61.         else data[k]=R[j++];
  62.     }
  63. }
  64. void Mergesort(int p,int r)
  65. {
  66.     int q;
  67.     if(p<r)
  68.     {
  69.         q=floor((p+r)/2);
  70.         Mergesort(p,q);
  71.         Mergesort(q+1,r);
  72.         Merge(p,q,r);
  73.     }
  74. }
  75. int main()
  76. {
  77.     int A,N,i;
  78.     scanf("%d",&N);
  79.     for(i=1; i<=N; i++)
  80.         scanf("%d",&data[i]);
  81.  
  82.     Mergesort(1,N);
  83.  
  84.     for(i=1; i<=N; i++)
  85.         printf("%d ",data[i]);
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment