Pagini recente » Cod sursa (job #1972790) | Cod sursa (job #1853604) | Cod sursa (job #2572544) | Cod sursa (job #2224130) | Cod sursa (job #2694619)
#include <fstream>
#define DMAX 500002
using namespace std;
ifstream fin("algosort.in");
ofstream fout("algosort.out");
int a[DMAX];
void BuildMaxHeap(int a[], int n);
void Heapify(int a[], int n, int poz);
//heap sort-maxheap
int main()
{
int n,i,r;
fin>>n;
for(i=0;i<n;i++)
fin>>a[i];
BuildMaxHeap(a,n);
r=n-1;
while(r>0)
{
swap(a[r],a[0]);
Heapify(a,r,0);
r--;
}
for(i=0;i<n;i++)
fout<<a[i]<<' ';
return 0;
}
void BuildMaxHeap(int a[], int n)
{
int i;
for(i=n;i>n/2;i--)
Heapify(a,n,i);
}
void Heapify(int a[], int n, int poz)
{
int k,heap=0;
while(poz*2+1<n&&!heap)
{
k=poz*2+1;
if(k+1<n&&a[k+1]>a[k])
k=k+1;
if(a[poz]<a[k])
{
swap(a[poz],a[k]);
poz=k;
}
else heap=1;
}
}