Pagini recente » Cod sursa (job #2914075) | Cod sursa (job #2307082) | Cod sursa (job #433596) | Cod sursa (job #1561310) | Cod sursa (job #393319)
Cod sursa(job #393319)
#include<stdio.h>
int v[500010],c,p,aux,i,n;
int main(){
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++)
fscanf(f,"%d",&v[i]);
for(i=2;i<=n;i++){
c=i;
p=i/2;
aux=v[c];
while(aux>v[p] && p>=1){
v[c]=v[p];
c=p;
p=p/2;
}
v[c]=aux;
}
for(i=n;i>=2;i--){
aux=v[i];
v[i]=v[1];
v[1]=aux;
p=1;
while(2*p<i-1){
c=p*2;
if(v[c]<=v[c+1])
c++;
if(v[p]<v[c]){
aux=v[c];
v[c]=v[p];
v[p]=aux;
p=c;
}
else
break;
}
}
if(v[1]>v[2]){
aux=v[2];
v[2]=v[1];
v[1]=aux;
}
for(i=1;i<=n;i++)
fprintf(g,"%d ",v[i]);
fclose(f);fclose(g);
return 0;
}