Advertisement
Ritam_C

mergesort_try_:')

Apr 9th, 2021
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.10 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.     int i1 = s1, i2 = s2;
  14.     while(i1 <= e1){
  15.         if(v[i1] >= v[i2]){
  16.             swap(v[i1], v[i2]);
  17.             int i = i2;
  18.             while(i <= e2-1){
  19.                 if(v[i] > v[i+1]){
  20.                     swap(v[i], v[i+1]);
  21.                 }
  22.                 i++;
  23.             }
  24.         }
  25.         i1++;
  26.     }
  27. }
  28.  
  29. vector<int> mergesort(vector<int>& v, int s, int e){
  30.     if(e-s > 1){
  31.         mergesort(v, s, s+(e-s)/2);
  32.         mergesort(v, s+(e-s)/2+1, e);
  33.         merge(v, s, s+(e-s)/2, s+(e-s)/2+1, e);
  34.     } else{
  35.         if(e-s == 1){
  36.             if(v[s] > v[e]){
  37.                 swap(v[s], v[e]);
  38.             }
  39.         }
  40.     }
  41.     return v;
  42. }
  43.  
  44. int main(){
  45.     vector<int> v;
  46.     for(int i = 0; i < 10000; i++){
  47.         v.push_back(10000-i);
  48.     }
  49.     v = mergesort(v, 0, v.size()-1);
  50.     printarray(v);
  51.     return 0;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement