Pagini recente » Cod sursa (job #2966596) | Cod sursa (job #2349111) | Cod sursa (job #69082) | Cod sursa (job #1831207) | Cod sursa (job #556799)
Cod sursa(job #556799)
#include<stdio.h>
int n,i,p,c,v[500010],aux;
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/=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[1];
v[1]=v[2];
v[2]=aux;
}
for(i=1;i<=n;i++)
fprintf(g,"%d ", v[i]);
fclose(f);
fclose(g);
return 0;
}