Pagini recente » Cod sursa (job #2181554) | Cod sursa (job #1316806) | Cod sursa (job #2716696) | Cod sursa (job #2244661) | Cod sursa (job #360219)
Cod sursa(job #360219)
#include<stdio.h>
int v[500200];
long int i,j,n,m;
void swap(int a,int b){
int aux;
aux=v[a],v[a]=v[b];v[b]=aux;
}
void upd(){
int k=i;
while(v[k]<v[k/2] && k>1){
swap(k,k/2);
k=k/2;}
}
void del(int m){
while(m<=n)
if(v[2*m+1]<v[2*m] && v[2*m+1]<v[m] && (2*m+1)<=n){swap(m,2*m+1);m=2*m+1;}
else
if(v[2*m]<v[m] && 2*m<=n){swap(m,2*m);m=2*m;}
else
break;
}
int main(){
freopen("algsort.in","r",stdin);
freopen("algsort.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{scanf("%d",&v[i]);
upd();}
m=n;
for(i=1;i<=m;i++){
printf("%d ",v[1]);
swap(1,n);
n--;
del(1);}
return 0;}