Pagini recente » Cod sursa (job #3227094) | Cod sursa (job #1553203) | Cod sursa (job #3005633) | Cod sursa (job #1155013) | Cod sursa (job #3128735)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n;
int v[500005];
void Citire();
void HeapSort();
void heapify(int n, int i);
void Afisare();
int main()
{
Citire();
HeapSort();
Afisare();
return 0;
}
void Citire()
{
fin >> n;
for(int i = 0; i < n; i++)
fin >> v[i];
}
void HeapSort()
{
int i;
for(i = n / 2 - 1; i >= 0; i--)
heapify(n, i);
for(i = n - 1; i >= 0; i--)
{
swap(v[0], v[i]);
heapify(i, 0);
}
}
void heapify(int n, int i)
{
int par = i;
int st = 2 * i + 1;
int dr = 2 * i + 2;
if(st < n && v[st] > v[par])
par = st;
if(dr < n && v[dr] > v[par])
par = dr;
if(par != i)
{
swap(v[i], v[par]);
heapify(n, par);
}
}
void Afisare()
{
for(int i = 0; i < n; i++)
fout << v[i] << " ";
}