Advertisement
Ritam_C

mergesort_try2_:')

Apr 9th, 2021
138
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.32 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. void printarray(vector<int> v){
  6.     for(int i = 0; i < v.size(); i++){
  7.         cout << v[i] << " ";
  8.     }
  9.     cout << "\n";
  10. }
  11.  
  12. void merge(vector<int>& v, int s1, int e1, int s2, int e2){
  13.     vector<int> p;
  14.     int i1 = s1, i2 = s2;
  15.     for(int i = 0; i < s1; i++){
  16.         p.push_back(v[i]);
  17.     }
  18.     while(i1 <= e1 && i2 <= e2){
  19.         if(v[i1] >= v[i2]){
  20.             p.push_back(v[i2]);
  21.             i2++;
  22.         } else{
  23.             p.push_back(v[i1]);
  24.             i1++;
  25.         }
  26.     }
  27.     for(int i = i1; i <= e1; i++){
  28.         p.push_back(v[i]);
  29.     }
  30.     for(int i = i2; i <= e2; i++){
  31.         p.push_back(v[i]);
  32.     }
  33.     for(int i = e2+1; i < v.size(); i++){
  34.         p.push_back(v[i]);
  35.     }
  36.     v = p;
  37. }
  38.  
  39. vector<int> mergesort(vector<int>& v, int s, int e){
  40.     if(e-s > 1){
  41.         mergesort(v, s, s+(e-s)/2);
  42.         mergesort(v, s+(e-s)/2+1, e);
  43.         merge(v, s, s+(e-s)/2, s+(e-s)/2+1, e);
  44.     } else{
  45.         if(e-s == 1){
  46.             if(v[s] > v[e]){
  47.                 swap(v[s], v[e]);
  48.             }
  49.         }
  50.     }
  51.     return v;
  52. }
  53.  
  54. int main(){
  55.     vector<int> v;
  56.     for(int i = 0; i < 10000; i++){
  57.         v.push_back(10000-i);
  58.     }
  59.     v = mergesort(v, 0, v.size()-1);
  60.     printarray(v);
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement