Pagini recente » Cod sursa (job #2855925) | Cod sursa (job #1216995) | Cod sursa (job #610052) | Cod sursa (job #2901873) | Cod sursa (job #490881)
Cod sursa(job #490881)
#include<stdio.h>
#include<algorithm>
using namespace std;
FILE*f=fopen("algsort.in","r");
FILE*g=fopen("algsort.out","w");
int V[500500],N,z,i,p,c;
int main () {
fscanf(f,"%d",&N);
for ( i = 1 ; i <= N ; ++i ){
fscanf(f,"%d",&V[i]);
z = i;
while ( z/2 != 0 && V[z] > V[z/2] )
swap(V[z],V[z/2]), z/= 2;
}
for ( i = 1 ; i <= N ; ++i ) {
swap(V[1],V[ N - i + 1 ]);
p = 1 ; c = 2;
while ( c < N - i ){
if ( c <= N && V[c] < V[c+1] )
++c;
if ( V[p] < V[c] ){
swap(V[p],V[c]);
p = c;
c = 2 * c;
}
else
break;
}
}
if ( V[1] > V[2] )
swap ( V[1] , V[2] );
for ( i = 1 ; i <= N ; ++i )
fprintf(g,"%d ",V[i]);
fclose(f);
fclose(g);
return 0;
}