Pagini recente » Cod sursa (job #1505657) | Cod sursa (job #2837988) | Cod sursa (job #2881796) | Cod sursa (job #261113) | Cod sursa (job #1526611)
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
void max_heap(int v[], long long i, long long n)
{
long long stang, dreapt, large, poz;
stang=2*i;
dreapt=(2*i+1);
if( (stang<=n) && (v[stang]>v[i]) )
large=stang;
else
large=i;
if( (dreapt<=n) && (v[dreapt]>v[large]) )
large=dreapt;
if( large!=i )
{
poz=v[i];
v[i]=v[large];
v[large]=poz;
max_heap(v, large, n);
}
}
void constr_max_heap(int v[], long long n)
{
int k;
for( k=n/2; k>=1; k--)
{
max_heap( v, k, n);
}
}
void HeapSort(int v[], long long n)
{
constr_max_heap( v, n);
int i, tempor;
for( i=n; i>=2; i--)
{
tempor=v[i];
v[i]=v[1];
v[1]=tempor;
max_heap( v, 1, i-1);
}
}
int main()
{
long long n, i;
int v[500010];
in>>n;
for( i=0; i<n; i++)
{
in>>v[i];
}
HeapSort( v, n);
for( i=0; i<n; i++)
{
out<<v[i]<<' ';
}
return 0;
}