Pagini recente » Cod sursa (job #2174449) | Cod sursa (job #1064469) | Cod sursa (job #1900230) | Cod sursa (job #1041034) | Cod sursa (job #823614)
Cod sursa(job #823614)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
int v[500000];
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;
}