Pagini recente » Cod sursa (job #1723237) | Cod sursa (job #798147) | Cod sursa (job #1230617) | Cod sursa (job #975030) | Cod sursa (job #2891628)
#include <fstream>
using namespace std;
ifstream fin("algsort.in");
ofstream fout("algsort.out");
int n,i,nr,h[500001];
void downHeap(int k) {
while (2*k<=nr) {
int p=2*k;
if (p+1<=nr && h[p]<h[p+1])
p++;
if (h[k]<h[p]) {
swap(h[k],h[p]);
k=p;
}
else
break;
}
}
void buildHeap() {
nr=n;
for (i=n/2;i>=1;i--)
downHeap(i);
}
int main() {
fin>>n;
for (i=1;i<=n;i++)
fin>>h[i];
buildHeap();
for (i=n;i>=1;i--) {
swap(h[1],h[i]);
nr--;
downHeap(1);
}
for (i=1;i<=n;i++)
fout<<h[i]<<" ";
return 0;
}