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