Pagini recente » Cod sursa (job #1362606) | Cod sursa (job #1079230) | Cod sursa (job #2066308) | Cod sursa (job #1498273) | Cod sursa (job #1237513)
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
int i,j,n,k,h[10000];
void swap(int i,int k)
{
int aux;
aux=h[k];
h[k]=h[i];
h[i]=aux;
}
void heapdown(int poz,int k)
{
int i;
if (2*poz>k) return;
if ((2*poz)+1<=k)
{
if (h[2*poz]>h[2*poz+1]) i=2*poz;
else i=(2*poz)+1;
}
else i=2*poz;
if (h[poz]<h[i])
{
swap(i,poz);
heapdown(i,k);
}
}
void sort(int k)
{
while(k>1)
{
swap (1,k);
k--;
heapdown(1,k);
}
}
int main()
{
f>>n;
for (i=1; i<=n; i++) f>>h[i];
for (i=n/2; i>0; i--) heapdown(i,n);
sort (n);
for (i=1; i<=n; i++) g<<h[i]<<" ";
f.close();
g.close();
return 0;
}