Pagini recente » Cod sursa (job #1500048) | Cod sursa (job #3123553) | Cod sursa (job #2412941) | Cod sursa (job #1682851) | Cod sursa (job #881853)
Cod sursa(job #881853)
#include<fstream>
using namespace std;
int h[500001];
void combheap(int h[],int p, int n)
{
int v=h[p],tata=p,fiu=2*p;
while(fiu<=n)
{
if(fiu<n)
if(h[fiu]<h[fiu+1]) fiu++;
if(v<h[fiu])
{
h[tata]=h[fiu];
tata=fiu;
fiu=2*tata;
}
else fiu=n+1;
}
h[tata]=v;
}
void crheap(int h[], int n)
{
int i;
for(i=n/2;i>0;i--)
combheap(h,i,n);
}
void hsort(int h[], int n)
{
int i,aux;
crheap(h,n);
for(i=n;i>0;i--)
{
aux=h[i];
h[i]=h[1];
h[1]=aux;
combheap(h,1,i-1);
}
}
int main()
{
int n,i;
ifstream f("algsort.in");
f>>n;
for(i=1;i<=n;i++)
f>>h[i];
f.close();
hsort(h,n);
ofstream g("algsort.out");
for(i=1;i<=n;i++)
g<<h[i]<<" ";
g.close();
return 0;
}