Pagini recente » Cod sursa (job #2636322) | Cod sursa (job #580978) | Cod sursa (job #302762) | Utilizatori inregistrati la Winter Challenge 2020 | Cod sursa (job #2292110)
#include<fstream>
#define NMAX 500004
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int leftson(int i)
{
return 2*i;
}
int rightson(int i)
{
return 2*i+1;
}
void heapdown(int a[], int n, int i)
{
int l=leftson(i);
int r=rightson(i);
int vmax = i;
if(l <= n && a[vmax] < a[l])
{
vmax = l;
}
if(r <= n && a[vmax] < a[r])
{
vmax = r;
}
if(vmax != i)
{
swap(a[vmax], a[i]);
heapdown(a, n, vmax);
}
}
int heap[NMAX], n, i;
int main()
{
fin >> n;
for (i = 1; i <= n; i++)
{
fin >> heap[i];
}
for (i = n/2; i >= 1; i--)
{
heapdown(heap, n, i);
}
for (i = n; i >= 1; i--)
{
swap(heap[1], heap[i]);
heapdown(heap, i - 1, 1);
}
for(i = 1; i <= n; i++)
{
fout << heap[i] << " ";
}
fin.close();
fout.close();
return 0;
}