Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. /*Riscrivere il Merge Sort utilizzando il contenitore Vector ed un iteratore.*/
  2. #include<iostream>
  3. #include<vector>
  4. using namespace std;
  5.  
  6. void Merge(vector<int>&elementi, short inizio, short fine)
  7. {
  8.     vector<int>v;
  9.     short mediano = (inizio + fine) / 2;
  10.    
  11.     vector<int>::iterator it_l{ elementi.begin() }, it_r{ elementi.begin() + mediano }, it_mid{ elementi.begin() + mediano }, it_end{ elementi.end() };
  12.     while (it_l != it_mid && it_r != it_end)
  13.     {
  14.         v.push_back((*it_l <= *it_r) ? *it_l++ : *it_r++);
  15.     }
  16.  
  17.     v.insert(v.end(), it_l, it_mid);
  18.     v.insert(v.end(), it_r, it_end);
  19.  
  20.     for (auto x : v)
  21.         cout << x << '\t';
  22.     cout << endl;
  23. }
  24.  
  25. void Merge_Sort(vector<int>elementi, short inizio, short fine)
  26. {
  27.     if (inizio < fine)
  28.     {
  29.         short mediano = (inizio + fine) / 2;
  30.         Merge_Sort(elementi, inizio, mediano);
  31.         Merge_Sort(elementi, mediano + 1, fine);
  32.         Merge(elementi, inizio, fine);
  33.     }
  34. }
  35.  
  36. int main()
  37. {
  38.     vector<int>elementi = { 4,5,7,2,8,0,9,1,2,4 };
  39.  
  40.     for (vector<int>::iterator i = elementi.begin(); i != elementi.end(); ++i)
  41.         cout << *i << '\t';
  42.     cout << endl;
  43.  
  44.     Merge_Sort(elementi, 0, (short)elementi.size());
  45.  
  46.     /*for (auto x : elementi)
  47.         cout << x << '\t';
  48.     cout << endl;*/
  49.  
  50.     return 0;
  51. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement