Pagini recente » Cod sursa (job #952638) | Monitorul de evaluare | Здравствуйте | Cod sursa (job #2035429) | Cod sursa (job #1852969)
#include<fstream>
#include<algorithm>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int h[500009],nh;
void urcare(int h[],int p);
void coboare(int h[],int nh, int p);
int main()
{
fin>>nh;
for(int i=1; i<=nh; i++)
{
fin>>h[i];
urcare(h,i);
}
for(int i=nh; i>=2; i--)
{
swap(h[i],h[1]);
coboare(h,i-1,1);
}
for(int i=1; i<=nh; i++)
{
fout<<h[i]<<" ";
}
fin.close();
fout.close();
return 0;
}
void urcare(int h[],int p)
{
while(p>=2 && h[p/2]<h[p])
{
swap(h[p],h[p/2]);
p=p/2;
}
}
void coboare(int h[],int nh, int p)
{
while(2*p<=nh)
{
int r=2*p;
if(r+1<=nh && h[r+1]>h[r])
{
r=r+1;
}
if(h[p]<h[r])
{
swap(h[p],h[r]);
p=r;
}
else
{
break;
}
}
}