Pagini recente » Cod sursa (job #3206399) | Cod sursa (job #2680113) | Cod sursa (job #481835) | Cod sursa (job #1206003) | Cod sursa (job #1698411)
#include <iostream>
using namespace std;
#include<fstream>
ifstream in("algsort.in");
ofstream out("algsort.out");
void MAX_HEAP(int a[], int i, int n)
{
int l,r,cmm,loc;
l=2*i;
r=(2*i+1);
if((l<=n)&&a[l]>a[i])
cmm=l;
else
cmm=i;
if((r<=n)&&(a[r]>a[cmm]))
cmm=r;
if(cmm!=i)
{
loc=a[i];
a[i]=a[cmm];
a[cmm]=loc;
MAX_HEAP(a, cmm,n);
}
}
void Con_MAX_HEAP(int a[], int n)
{
for(int k = n/2; k >= 1; k--)
{
MAX_HEAP(a, k, n);
}
}
void HEAPSORT(int a[], int n)
{
Con_MAX_HEAP(a,n);
int i, temp;
for (i = n; i >= 2; i--)
{
temp = a[i];
a[i] = a[1];
a[1] = temp;
MAX_HEAP(a, 1, i - 1);
}
}
int main()
{
int n;
in>>n;
int a[n];
for (int i = 1; i <= n; i++)
{
in>>a[i];
}
HEAPSORT(a, n);
for (int i = 1; i <= n; i++)
{
out<<a[i]<<endl;
}
return 0;
}