Advertisement
Mihai_Preda

Untitled

Feb 24th, 2021
260
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.05 KB | None | 0 0
  1. #include <iostream>
  2. #include <fstream>
  3.  
  4. using namespace std;
  5.  
  6. const int nMax = 500005;
  7.  
  8. int n;
  9. int v[nMax];
  10.  
  11. void citire()
  12. {
  13.     ifstream in("algsort.in");
  14.     in >> n;
  15.     for(int i = 1; i <= n; ++i)
  16.         in >> v[i];
  17.     in.close();
  18. }
  19.  
  20. void merge_sort(int st, int dr)
  21. {
  22.     static int a[nMax];
  23.     if(st == dr)
  24.         return;
  25.     int mid = (st + dr) / 2;
  26.     merge_sort(st, mid);
  27.     merge_sort(mid + 1, dr);
  28.  
  29.     for(int i = st; i <= dr; ++i)
  30.         a[i] = v[i];
  31.     int ind1 = st;
  32.     int ind2 = mid + 1;
  33.     int i;
  34.     for(i = st; i <= dr && ind1 <= mid && ind2 <= dr; ++i)
  35.     {
  36.         if(a[ind1] < a[ind2])
  37.             v[i] = a[ind1++];
  38.         else
  39.             v[i] = a[ind2++];
  40.     }
  41.     while(ind1 <= mid)
  42.         v[i++] = a[ind1++];
  43.     while(ind2 <= dr)
  44.         v[i++] = a[ind2++];
  45. }
  46.  
  47. void afisare()
  48. {
  49.     ofstream out("algsort.out");
  50.     for(int i = 1; i <= n; ++i)
  51.         out << v[i] << " ";
  52.     out.close();
  53. }
  54.  
  55. int main()
  56. {
  57.     citire();
  58.     merge_sort(1, n);
  59.     afisare();
  60.     return 0;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement