Advertisement
darkjessy94

mergesort astratto vector - internet

Oct 13th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.71 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. using namespace std;
  5.  
  6. void print(vector<int> v)
  7. {
  8.   for(int i = 0; i < v.size(); i++) cout << v[i] << " ";
  9.   cout << endl;
  10. }
  11.  
  12. vector<int> merge(vector<int> left, vector<int> right)
  13. {
  14.    vector<int> result;
  15.    while ((int)left.size() > 0 || (int)right.size() > 0) {
  16.       if ((int)left.size() > 0 && (int)right.size() > 0) {
  17.          if ((int)left.front() <= (int)right.front()) {
  18.             result.push_back((int)left.front());
  19.             left.erase(left.begin());
  20.          }
  21.    else {
  22.             result.push_back((int)right.front());
  23.             right.erase(right.begin());
  24.          }
  25.       }  else if ((int)left.size() > 0) {
  26.             for (int i = 0; i < (int)left.size(); i++)
  27.                result.push_back(left[i]);
  28.             break;
  29.       }  else if ((int)right.size() > 0) {
  30.             for (int i = 0; i < (int)right.size(); i++)
  31.                result.push_back(right[i]);
  32.             break;
  33.       }
  34.    }
  35.    return result;
  36. }
  37.  
  38. vector<int> mergeSort(vector<int> m)
  39. {
  40.    if (m.size() <= 1)
  41.       return m;
  42.  
  43.    vector<int> left, right, result;
  44.    int middle = ((int)m.size()+ 1) / 2;
  45.  
  46.    for (int i = 0; i < middle; i++) {
  47.       left.push_back(m[i]);
  48.    }
  49.  
  50.    for (int i = middle; i < (int)m.size(); i++) {
  51.       right.push_back(m[i]);
  52.    }
  53.  
  54.    left = mergeSort(left);
  55.    right = mergeSort(right);
  56.    result = merge(left, right);
  57.  
  58.    return result;
  59. }
  60.  
  61. int main()
  62. {
  63.    vector<int> v;
  64.  
  65.    v.push_back(38);
  66.    v.push_back(27);
  67.    v.push_back(43);
  68.    v.push_back(3);
  69.    v.push_back(9);
  70.    v.push_back(82);
  71.    v.push_back(10);
  72.  
  73.    print(v);
  74.    cout << "------------------" << endl;
  75.  
  76.    v = mergeSort(v);
  77.  
  78.    print(v);
  79. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement