Pagini recente » Autentificare | Cod sursa (job #206591) | Cod sursa (job #713693) | Cod sursa (job #1013067) | Cod sursa (job #361760)
Cod sursa(job #361760)
#include <fstream.h>
int n,v[500001];
void read(char file[20]);
void down(int k);
int main()
{
int i,swap,nn;
read("algsort.in");
for(i=n/2;i>0;--i) down(i);
nn=n;
for(i=n;i>=2;--i)
{
swap=v[1]; v[1]=v[n]; v[n]=swap; --n;
down(1);
}
n=nn;
ofstream out("algsort.out");
for(i=1;i<=n;++i) out<<v[i]<<' ';
out.close();
return 0;
}
void read(char file[20])
{
int i;
ifstream in(file);
in>>n;
for(i=1;i<=n;++i) in>>v[i];
in.close();
}
void down(int k)
{
int son,left,right,swap;
do
{
son=0; left=2*k;
if(left<=n)
{
son=left; right=left+1;
if(right<=n && v[left]<v[right]) son=right;
if(v[k]<v[son]){ swap=v[k]; v[k]=v[son]; v[son]=swap; k=son; }
else son=0;
}
}while(son);
}