Pagini recente » Cod sursa (job #3204674) | Cod sursa (job #2144079) | Cod sursa (job #2174019) | Cod sursa (job #86146) | Cod sursa (job #2082856)
#include <iostream>
#include<bits/stdc++.h>
using namespace std;
vector<int> h;
void MaxHeapify(int nod,int n)
{
if(2*nod>n) return;
if(2*nod==n)
{
if(h[2*nod]>h[nod]) h[2*nod]^=h[nod]^=h[2*nod]^=h[nod];
return;
}
if(h[2*nod]<h[nod] && h[nod]>h[2*nod+1]) return;
if(h[2*nod]>h[nod] && h[2*nod]>h[2*nod+1])
{
h[2*nod]^=h[nod]^=h[2*nod]^=h[nod];
MaxHeapify(2*nod,n);
return;
}
h[2*nod+1]^=h[nod]^=h[2*nod+1]^=h[nod];
MaxHeapify(2*nod+1,n);
return;
}
int main()
{
ifstream f("algsort.in");
ofstream g("algsort.out");
int n,i;
f>>n;
h.resize(n+1);
for(int i=1; i<=n; ++i) f>>h[i];
for(int i=n/2; i>=1; --i)
MaxHeapify(i,n);
for(int i=n; i>=2; --i)
{
h[i]^=h[1]^=h[i]^=h[1];
MaxHeapify(1,i-1);
}
for(i=1; i<=n; ++i) g<<h[i]<<' ';
return 0;
}