Cod sursa(job #1040966)

Utilizator victor_crivatCrivat Victor victor_crivat Data 25 noiembrie 2013 11:47:00
Problema Sortare prin comparare Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
using namespace std;
int n,m,i,h[500000],k;
ifstream f("algsort.in");
ofstream g("algsort.out");
void swap(int i,int j)
{int x;
    x=h[j];h[j]=h[i]; h[i]=x;
}
void heapup(int poz)
{int i;
    if (poz<=1) return;
i=poz/2;
if (h[poz]>h[i])
{swap (i,poz);
heapup(i);
}
}
void heapdown(int poz,int k)
{int i;
if (2*poz>k) return;
if ((2*poz)+1<=k)
{if (h[2*poz]>h[2*poz+1]) i=2*poz;
                         else i=(2*poz)+1;}
                         else i=2*poz;
if (h[poz]<h[i])
{swap(i,poz);
heapdown(i,k);
}
}
void sort(int k)
{while(k>1)
{swap(1,k);
k--;
heapdown(1,k);
}
}
int main()
{f>>n;
for (i=1;i<=n;i++) f>>h[i];
for(k=2;k<=n;k++)
heapup(k);
for (i=1;i<=n;i++)
g<<h[i]<<" ";
g<<endl;
sort(n);
f.close();
g.close();
return 0;
}