Cod sursa(job #2195894)

Utilizator pasoi_stefanPasoi Stefan pasoi_stefan Data 17 aprilie 2018 17:03:04
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
ifstream cin("algsort.in");
ofstream cout("algsort.out");
int v[500005],n;
void heapify(int n,int i)
{
    int largest=i,l=2*i,r=2*i+1;
    if(l<=n && v[l]>v[largest])
        largest=l;
    if(r<=n && v[r]>v[largest])
        largest=r;
    int aux;
    if(largest!=i)
    {
        aux=v[i]; v[i]=v[largest]; v[largest]=aux;
        heapify(n,largest);
    }
}
void HeapSort()
{
    for(int i=n/2;i>=1;i--)
        heapify(n,i);
    int aux;
    for(int i=n;i>=1;i--)
    {
        aux=v[1]; v[1]=v[i]; v[i]=aux;
        heapify(i-1,1);
    }
}
int main()
{
    cin>>n;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    HeapSort();
	for(int i=1;i<=n;i++)
        cout<<v[i]<<' ';
}