Pagini recente » Cod sursa (job #2107414) | Cod sursa (job #391684) | Cod sursa (job #2022941) | Cod sursa (job #431432) | Cod sursa (job #1981008)
#include <bits/stdc++.h>
#define Nmax 500001
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int a[Nmax];
void comb_heap(int i, int n)
{
int t,fiu,val;
val=a[i];
t=i;
fiu=2*i;
while(fiu<=n)
{
if(fiu<n and a[fiu]<a[fiu+1])
fiu++;
if(val<a[fiu])
{
a[t]=a[fiu];
t=fiu;
fiu*=2;
}
else fiu=n+1;
}
a[t]=val;
}
void do_heap(int n)
{
for(int i=n/2;i>0;i--)
comb_heap(i,n);
}
void heap_sort(int n)
{
for(int i=n;i>1;i--)
{
swap(a[i],a[1]);
do_heap(i-1);
}
}
int main()
{
int n;
f>>n;
for(int i=1;i<=n;i++)
f>>a[i];
make_heap(a+1,a+n+1);
sort_heap(a+1,a+n+1);
for(int i=1;i<=n;i++)
g<<a[i]<<' ';
return 0;
}