Pagini recente » Cod sursa (job #2329519) | Cod sursa (job #2221116) | Cod sursa (job #1990799) | Cod sursa (job #43387) | Cod sursa (job #361759)
Cod sursa(job #361759)
#include <fstream.h>
#include <conio.h>
int n,v[500001];
void read(char *file);
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)
{
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);
}