Cod sursa(job #2381632)

Utilizator mihaimodiMihai Modi mihaimodi Data 17 martie 2019 11:14:21
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.77 kb
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int h[500001];
int k,n;
void downheap(int poz)
{
    int x=h[poz];
    while(2*poz<=k)
    {
        int st=poz*2;
        if(st+1<=k&&h[st]<h[st+1])
            st++;
        if(h[st]>h[poz])
        {
            h[poz]=h[st];
            poz=st;
        }
        else
            break;
    }
    h[poz]=x;
}
void heapsort(int n)
{

    for(int i=n/2;i>=1;i--)
        downheap(i);
}
int main()
{
    fin>>n;k=n;
    for(int i=1;i<=n;i++)
        fin>>h[i];

    heapsort(n);

    for(int i=1;i<n;i++)
    {
        swap(h[k],h[1]);
        k--;
        downheap(1);
    }
    for(int i=1;i<=n;i++)
        fout<<h[i]<<' ';
    return 0;
}