Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- using namespace std;
- void riempi(vector <int> &a)
- {
- cout<<"RIEMPIMENTO VETTORE :"<<endl;
- int temp, n;
- cout<<"QUANTI ELEMENTI DOVRA' CONTENERE ?"<<endl;
- cin>>n;
- for(int i=0;i<n;i++)
- {
- cout<<"INSERISCI L'ELEMENTO NUMERO "<<i+1<<" : ";
- cin>>temp;
- a.push_back(temp);
- }
- }
- void stampa(vector <int> a)
- {
- cout<<"STAMPA VETTORE :"<<endl;
- for(int i=0;i<a.size();i++)
- cout<<"|"<<a.at(i)<<"|"<<endl;
- }
- void merge(vector <int> &a, int primo, int mediano, int ultimo)
- {
- int i, j, k;
- vector <int> b;
- b.resize(a.size());
- i = primo;
- j = mediano+1;
- k = 0;
- while(i<=mediano && j<= ultimo)
- {
- if(a.at(i)<a.at(j))
- {
- b.at(k)=a.at(i++);
- }
- else
- {
- b.at(k)=a.at(j++);
- }
- k++;
- }
- while(i<=mediano)
- {
- b.at(k)=a.at(i++);
- k++;
- }
- while(j<=ultimo)
- {
- b.at(k)=a.at(j++);
- j++;
- k++;
- }
- for(k=primo;k<=ultimo;k++)
- a.at(k)=b.at(k-primo);
- }
- void mergesort(vector <int> &a, int primo, int ultimo)
- {
- int mediano;
- if(primo<ultimo)
- {
- mediano = (primo+ultimo)/2;
- mergesort(a,primo,mediano);
- mergesort(a,mediano+1, ultimo);
- merge(a,primo,mediano,ultimo);
- }
- }
- int main()
- {
- vector <int> a;
- riempi(a);
- stampa(a);
- mergesort(a,0,a.size()-1);
- stampa(a);
- return 0;
- }
Add Comment
Please, Sign In to add comment