Pagini recente » Cod sursa (job #1988127) | Borderou de evaluare (job #2287571) | Cod sursa (job #2288636)
#include<fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int n,a[500005];
void downheap(int k,int n){
int nod;
do{
nod=0;
if(2*k<=n){
nod=2*k;
if(2*k+1<=n && a[2*k+1]>a[2*k])
nod=2*k+1;
if(a[k]>a[nod])
nod=0;
}
if(nod){
swap(a[k],a[nod]);
k=nod;
}
}while(nod);
}
int main(){
cin>>n;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n/2;i>=1;i--)
downheap(i,n);
for(int i=n;i>=2;i--){
swap(a[1],a[i]);
downheap(1,i-1);
}
for(int i=1;i<=n;i++)
cout<<a[i]<<' ';
}