Cod sursa(job #1053905)

Utilizator AlexandravVoda Alexandra Ioana Alexandrav Data 13 decembrie 2013 00:15:48
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.86 kb
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
int v[500000], n, v1[500000],n1;

void urca(int poz)
{ while(poz>1 && v[poz]<v[poz/2])
	{ swap(v[poz],v[poz/2]);
	  poz=poz/2;
	}
}

void insert(int val,int i)
{ v[i]=val;
int poz=i;
urca(poz);
}

void coboara(int poz)
{int poz1;
while(poz*2+1<=n && (v[poz]>v[poz*2] || v[poz]>v[poz*2+1]))
	{ poz1=poz*2;
	 if(v[poz1+1]<v[poz])
		 poz1+=1;
	 swap(v[poz],v[poz1]);
	 poz=poz1;
	coboara(1);}
	
if(poz*2==n && v[poz*2]<v[poz])
	swap(v[poz],v[poz*2]);

}
	

void heapsort()
{v1[++n1]=v[1];
v[1]=v[n--];
coboara(1);
}
	
	
int main()
{int i,x, aux;
ifstream f("algsort.in");
ofstream g("algsort.out");
f>>n;
for(i=1;i<=n;i++)
{
	f>>x;
	insert(x,i);
}
aux=n;
for(i=1;i<=aux;i++)
heapsort();
for(i=1;i<=aux;i++)
g<<v1[i]<<" ";
f.close();
g.close();
}