Pagini recente » Cod sursa (job #2795744) | Cod sursa (job #1624857) | Cod sursa (job #972069) | Cod sursa (job #47426) | Cod sursa (job #2355470)
#include <iostream>
#include <fstream>
const int MAXN = 5e5 + 5;
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int n,v[MAXN],aux[MAXN];
void combina(int left,int mid,int right){
int i = left,j = mid + 1,index = left - 1;
while(i <= mid and j <= right){
if(v[i] < v[j]){
aux[++index] = v[i];
i++;
}else if(v[i] >= v[j]){
aux[++index] = v[j];
j++;
}
}
while(i <= mid){
aux[++index] = v[i];
i++;
}
while(j <= right){
aux[++index] = v[j];
j++;
}
for(int i = left; i <= right; i++)
v[i] = aux[i];
}
void divide(int left,int right){
if(left == right)
return;
int mid = (left + right) / 2;
divide(left,mid);
divide(mid + 1,right);
combina(left,mid,right);
}
int main()
{
in>>n;
for(int i = 1; i <= n; i++)
in>>v[i];
divide(1,n);
for(int i = 1; i <= n; i++)
out<<v[i]<<" ";
return 0;
}