Pagini recente » Cod sursa (job #1986046) | Cod sursa (job #253784) | Cod sursa (job #1656189) | Cod sursa (job #1097196) | Cod sursa (job #764546)
Cod sursa(job #764546)
#include <fstream>
using namespace std;
#define maxn 500007
ifstream fin("algsort.in"); ofstream fout("algsort.out");
int b[maxn],a[maxn];
void merge(int left,int right)
{
if(left == right)
return;
int mid = (left + right)>>1;
merge(left,mid);
merge(mid + 1,right);
int i,j,k = left - 1;
for(i = left,j = mid + 1; i <= mid && j <= right;)
{
b[++k] = (a[i] < a[j])?a[i] : a[j];
if(a[i] < a[j]) i++; else j++;
}
for(; i <= mid; i++) b[++k] = a[i];
for(; j <= right; j++) b[++k] = a[j];
if(k != right) b[right] = a[right];
for(i = left; i <= right; i++)
a[i] = b[i];
}
int main()
{
int N,i;
fin>>N;
for(i = 1; i <= N; i++)
fin>>a[i];
merge(1,N);
for(i = 1; i <= N; i++)
fout<<a[i]<<' ';
return 0;
}