Pagini recente » Cod sursa (job #2501261) | Cod sursa (job #3001967) | Cod sursa (job #3196148) | Cod sursa (job #1965159) | Cod sursa (job #1831403)
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");
long* a;
int n,i,j,m,k,t,p;
void swap1(long &c,long &b)
{
int aux=c;
c=b;
b=aux;
}
void heapify(long* a,int n,int i)
{
int largest=i;
int l=2*i;
int r=2*i+1;
if(l<=n && a[l]>a[largest])
largest=l;
if(r<=n && a[r]>a[largest])
largest=r;
if(largest!=i)
{
swap1(a[i],a[largest]);
heapify(a,n,largest);
}
}
void heapSort(long* a,int n)
{
for(int i=n/2;i>=1;i--)
heapify(a,n,i);
for(int i=n;i>=1;i--)
{
swap1(a[1],a[i]);
heapify(a,i-1,1);
}
}
int main()
{
f>>n;
a=new long[n+5];
for(i=1;i<=n;i++)
f>>a[i];
heapSort(a,n);
for(i=1;i<=n;i++)
g<<a[i]<<' ';
}