Cod sursa(job #823616)

Utilizator krissu93FMI Tiugan Cristiana Elena krissu93 Data 25 noiembrie 2012 13:06:28
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.96 kb
#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;
}