Pagini recente » Cod sursa (job #1669016) | Cod sursa (job #886254) | Cod sursa (job #3281406) | Cod sursa (job #2508965) | Cod sursa (job #810951)
Cod sursa(job #810951)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
#define NMAX 500001
int n,lg=0,heap[NMAX];
void baga(int val);
void scoate1();
void urca(int poz);
void coboara(int poz);
int main()
{
int i,j,k,m;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>j;
baga(j);
}
for(i=1;i<=n;i++)
{
fout<<heap[1]<<" ";
scoate1();
}
}
void baga(int val)
{
heap[++lg]=val;
urca(lg);
}
void urca(int poz)
{
int c=poz/2,aux;
while(c>=1)
{
if(heap[c]<heap[poz]) return;
aux=heap[c];
heap[c]=heap[poz];
heap[poz]=aux;
poz=c;
c=c/2;
}
}
void coboara(int poz)
{
int c=poz*2,aux;
while(c<=lg)
{
if(c!=lg && heap[c]>heap[c+1]) c++;
if(heap[c]>heap[poz]) return;
aux=heap[c];
heap[c]=heap[poz];
heap[poz]=aux;
poz=c;
c=c*2;
}
}
void scoate1()
{
heap[1]=heap[lg--];
coboara(1);
}