#include<iostream> #include<vector> using namespace std;
void merge(vector<int> &v,int l, int m,int r) { vector<int> a(v.begin()+l,v.begin()+m+1); vector<int> b(v.begin()+m+1,v.begin()+r+1); int ptr1=0,ptr2=0,ptr=l; while(ptr1<a.size() && ptr2<b.size()) if(a[ptr1]<b[ptr2]) v[ptr++]=a[ptr1++]; else v[ptr++]=b[ptr2++]; while(ptr1<a.size()) v[ptr++]=a[ptr1++]; while(ptr2<b.size()) v[ptr++]=b[ptr2++]; } void mergesort(vector<int> &vec,int l,int r ) { if(l<r) { int m=(l+(r-1))/2; mergesort(vec,l,m); mergesort(vec,m+1,r); merge(vec,l,m,r); } } int main() { int arr[] ={99,8,22,11,44,55,2,1,5,26,98,8,888,36,99,75,48,74,587,4}; vector<int> vec(arr,arr+sizeof(arr)/sizeof(int)); mergesort(vec,0,(vec.size())-1); for(int i=0;i<vec.size();i++) cout<<vec[i]<<" "; return 0; }