Pagini recente » Cod sursa (job #1674594) | Cod sursa (job #3128057) | Cod sursa (job #2646529) | Cod sursa (job #2611755) | Cod sursa (job #2296895)
#include <fstream>
#define nmax 500001
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int a[nmax],n;
void heapify(int ct,int r)
{ int i=r;
int left=2*r+1;
int right=2*r+2;
if(left<ct && a[left]>a[i]) i=left;
if(right<ct && a[right]>a[i]) i=right;
if(i!=r)
{ swap(a[i],a[r]);
heapify(ct,i);
}
}
void heapsort()
{ int i;
for(i=n/2-1; i>=0; i--)
heapify(n,i);
for(i=n-1; i>=0; i--)
{
swap(a[0],a[i]);
heapify(i,0);
}
}
int main()
{
int i;
fin>>n;
for(i=0; i<n; i++)
fin>>a[i];
heapsort();
for(i=0; i<n; i++) fout<<a[i]<<" ";
return 0;
}