Advertisement
ekzolot

Untitled

Oct 26th, 2021
112
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 <vector>
  3. using namespace std;
  4. vector <int> a;
  5. vector <int> merge_(int x, int y){
  6.     int m=(x+y)/2;
  7.     vector <int> result(y-x);
  8.     int i=x;
  9.     int j=m;
  10.     while (i<m && j<y){
  11.         if (a[i]<=a[j]){
  12.             result[i-x+j-m]=a[i];
  13.             i++;
  14.         }else{
  15.             result[i-x+j-m]=a[j];
  16.             j++;
  17.         }
  18.     }
  19.     while (i<m){
  20.         result[i-x+j-m]=a[i];
  21.         i++;
  22.     }while (j<y){
  23.         result[i-x+j-m]=a[j];
  24.         j++;
  25.     }
  26.     return result;
  27. }
  28. vector <int> merge_sort(int x, int y){
  29.     if (y-x<=1){
  30.         return a;
  31.     }
  32.     int m=(x+y)/2;
  33.     merge_sort(x, m);
  34.     merge_sort (m, y);
  35.     vector <int> merged=merge_(x, y);
  36.     for (int i=0; i<y-x; i++){
  37.         a[x+i]=merged[i];
  38.     }
  39.     return a;
  40. }
  41. int main(){
  42.     int n;
  43.     cin>>n;
  44.     int x=0;
  45.     for (int i=0; i<n; i++){
  46.         int b;
  47.         cin>>b;
  48.         a.push_back(b);
  49.     }
  50.     vector <int> answer=merge_sort(x, n);
  51.     for (int i=0; i<n; i++){
  52.         cout<<answer[i]<<" ";
  53.     }
  54.  
  55. }
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement