Pagini recente » Cod sursa (job #727610) | Cod sursa (job #455175) | Cod sursa (job #1754605) | Cod sursa (job #2253112) | Cod sursa (job #346896)
Cod sursa(job #346896)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
void merge(int i,int j,vector<int>& v){
if(i+1<j){
int m=(i+j)/2;
merge(i,m,v);merge(m,j,v);
vector<int> temp;
int x=i,y=m;
while(x<m&&y<j){
if(v[x]<v[y]){ temp.push_back(v[x]);x++;}
else {temp.push_back(v[y]);y++;}
}
while(x<m){temp.push_back(v[x]);x++;}
while(y<j){temp.push_back(v[y]);y++;}
for(int t=i;t<j;++t){
v[t]=temp[t-i];
}
}
}
int main(){
ifstream in("algsort.in");
ofstream out("algsort.out");
int n;in>>n;
vector<int> v;v.reserve(n);
for(int i=0;i<n;++i){
int t;in>>t;v.push_back(t);
}
merge(0,n,v);
for(int i=0;i<n;i++){
out<<v[i]<<" ";
}
}