Pagini recente » Cod sursa (job #1007713) | Cod sursa (job #2423389) | Cod sursa (job #2984341) | Cod sursa (job #2588719) | Cod sursa (job #3171393)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("algsort.in");
ofstream fout ("algsort.out");
int v[500005];
vector <long long> w;
void Interclas (int s1,int s2,int d1,int d2){
while (s1<=d1 and s2<=d2){
if (v[s1]<v[s2]){
w.push_back(v[s1]);
s1++;
}else{
w.push_back(v[s2]);
s2++;
}
}
if (s1<=d1){
for (int i=s1+1;i<=d1;++i){
w.push_back(v[i]);
}
}else{
for (int i=s2+1;i<=d2;++i){
w.push_back(v[i]);
}
}
for (int i=0;i<w.size();++i){
v[s1+i] = w[i];
}
w.clear();
}
void MergeSort(int l,int r){
if (l==r){
return;
}
int m = (l+r)/2;
MergeSort(l,m);
MergeSort(m+1,r);
Interclas(l,m,m+1,r);
}
int main()
{
int n;
fin >> n;
for (int i=1;i<=n;++i){
fin >> v[i];
}
MergeSort(1,n);
for (int i=1;i<=n;++i){
fout << v[i] << ' ';
}
return 0;
}