Pagini recente » Cod sursa (job #1748691) | Cod sursa (job #2396857) | Cod sursa (job #693878) | Cod sursa (job #2341487) | Cod sursa (job #1852967)
#include<fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[500002],n,i,aux;
void urcare(int a[],int p)
{
int aux;
while(2<=p&&a[p/2]>a[p])
{
aux=a[p/2];
a[p/2]=a[p];
a[p]=aux;
p=p/2;
}
}
void coborare(int a[],int n, int p)
{
int r,aux;
while(2*p<=n)
{
r=2*p;
if(r+1<=n&&a[r+1]<a[r])
{
r=r+1;
}
if(a[p]>a[r])
{
aux=a[p];
a[p]=a[r];
a[r]=aux;
p=r;
}
else
{
break;
}
}
}
int main()
{
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
}
for(i=2;i<=n;i++)
{
urcare(a,i);
}
for(i=n;2<=i;i--)
{
aux=a[1];
a[1]=a[i];
a[i]=aux;
coborare(a,i-1,1);
}
for(i=n;1<=i;i--)
{
fout<<a[i]<<" ";
}
fin.close();
fout.close();
return 0;
}