Pagini recente » Cod sursa (job #1237723) | Cod sursa (job #2468422) | Cod sursa (job #1172573) | Cod sursa (job #2522112) | Cod sursa (job #2766214)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int len, v[500005], w[500005];
void combine(int a, int b, int c){
int i=a;
int n=b;
int j=b+1;
int m=c;
w[0]=0;
while(i <= n && j <= m)
if(v[i] <= v[j]){
w[++w[0]]=v[i];
i++;
}else{
w[++w[0]]=v[j];
j++;
}
for(int pas=i; pas <= n; pas++)
w[++w[0]] = v[pas];
for(int pas=j; pas <= m; pas++)
w[++w[0]] = v[pas];
for(int pas=a; pas <= c; pas++)
v[pas] = w[pas-a+1];
}
void dei(int st, int dr){
if(st < dr){
int md=(st+dr)/2;
dei(st, md);
dei(md+1, dr);
combine(st, md, dr);
}
}
int main (){
fin>>len;
for(int i=1; i<=len; i++)
fin>>v[i];
dei(1, len);
for(int i=1; i<=len; i++)
fout<<v[i]<<" ";
return 0;
}