Pagini recente » Cod sursa (job #1229644) | Cod sursa (job #2247869) | Cod sursa (job #2921244) | Cod sursa (job #2177244) | Cod sursa (job #3262866)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int v[10000001];
int aux[10000001];
void merge(int st, int dr) {
if(st == dr)
return ;
int mid = (st + dr) / 2;
merge(st,mid);
merge(mid + 1, dr);
int i = st, j = mid + 1;
int cnt = 0;
while(i <= mid && j <= dr){
if(v[i] > v[j]){
aux[++cnt] = v[j];
j++;
}
else{
aux[++cnt] = v[i];
i++;
}
}
while(i <= mid){
aux[++cnt] = v[i];
i++;
}
while(j <= dr){
aux[++cnt] = v[j];
j++;
}
for(int k = 1; k <= cnt; k ++){
v[st + k - 1] = aux[k];
}
}
int main(){
int n;
fin >> n;
for(int i = 1; i<=n; i ++) {
fin >> v[i];
}
merge(1,n);
for(int i = 1; i<=n; i ++){
fout << v[i] << " ";
}
}