Pagini recente » Cod sursa (job #2838167) | Cod sursa (job #1555982) | Cod sursa (job #516116) | Cod sursa (job #2759032) | Cod sursa (job #823616)
Cod sursa(job #823616)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[600000];
int nr=0;
int n;
void schimba (int i, int j)
{
int aux=v[i];
v[i]=v[j];
v[j]=aux;
}
void coboara (int i)
{
int fst=2*i;
int fdr=2*i+1;
int fbun=i;
if (fst<=nr && v[fst]<v[fbun]) fbun=fst;
if (fdr<=nr && v[fdr]<v[fbun]) fbun=fdr;
if (fbun!=i)
{
schimba(i,fbun);
coboara(fbun);
}
}
int main()
{
in>>n;
int i,j;
for (j=1;j<=n;j++)
{
int a;
in>>a;
v[++nr]=a;
i=nr;
while (v[i]<v[i/2] && i>1)
{
schimba(i,i/2);
i=i/2;
}
}
int fminim;
for (j=1;j<=n;j++)
{
out<<v[1]<<' ';
schimba(1,nr);
nr--;
i=1;
coboara(1);
/* if (v[2*i]<v[2*i+1]) fminim=2*i;
else fminim=2*i+1;
while (v[i]>v[fminim] && fminim!=i)
{
schimba(i,fminim);
i=fminim;
if (v[2*i]<v[2*i+1]) fminim=2*i;
else fminim=2*i+1;
}*/
}
return 0;
}