#include<iostream> #include<vector> #include<algorithm> using namespace std; vector<int> merge(vector<int> a, vector<int> b){ -vector<int> r; -int i=0,j=0; -while(i<a.size() && j<b.size()) --if(a[i]<b[j]) ---r.push_back(a[i++]); --else if(b[j]<=a[i]) ---r.push_back(b[j++]); -if(i==a.size()) --while(j<b.size()) ---r.push_back(b[j++]); -if(j==b.size()) --while(i<a.size()) ---r.push_back(a[i++]); -return r; } vector<int> msort(vector<int> x){ -if(x.size()==1) --return x; -vector<int> a,b; -int i; -for(i=0; i<x.size()/2; i++) --a.push_back(x[i]); -for(; i<x.size(); i++) --b.push_back(x[i]); -a = msort(a); -b = msort(b); -return merge(a,b); } int main(){ -vector<int> x={5,2,7,4,9}; -x = msort(x); -for(int i=0; i<x.size(); i++) --cout<<x[i]<<endl; }