Pagini recente » Cod sursa (job #1812626) | Cod sursa (job #2114908) | Cod sursa (job #2780697) | Cod sursa (job #322690) | Cod sursa (job #360222)
Cod sursa(job #360222)
#include<fstream.h>
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,n,h[100];
int poz_max(int i,int n)
{if (2*i+1<=n)
if (h[2*i]>h[2*i+1]) return 2*i;
else return 2*i+1;
else return 2*i;}
void schimb (int &i,int &j)
{int aux=i;i=j;j=aux;}
void divide (int i,int n)
{if (i<=n/2)
{int k=poz_max(i,n);
if (h[k]>h[i])
{schimb (h[k],h[i]);
divide (k,n);}
}
}
void heap ()
{for (int i=n/2;i>=1;i--)
divide(i,n);
}
void heapsort()
{
int i;
heap();
for(i=n;i>1;i--)
{
schimb(h[1],h[i]);
divide(1,i-1);
}
}
int main()
{
f>>n;
for(i=1;i<=n;i++)
f>>h[i];
heapsort();
for(i=1;i<=n;i++)
g<<h[i]<<" ";
return 0;
}