Pagini recente » Cod sursa (job #2157862) | Cod sursa (job #1436332) | Cod sursa (job #1846623) | Cod sursa (job #525127) | Cod sursa (job #2314105)
#include <bits/stdc++.h>
const int maxn = 5e5+10;
using namespace std;
FILE *fin = freopen("algsort.in", "r", stdin);
FILE *fout = freopen("algsort.out", "w", stdout);
int n;
int a[maxn];
void heapify(int size, int pos) {
int lson = pos*2 + 1;
int rson = pos*2 + 2;
int largest = pos;
if (lson < size && a[largest] < a[lson])
largest = lson;
if (rson < size && a[largest] < a[rson])
largest = rson;
if (largest != pos) {
swap(a[pos], a[largest]);
heapify(size, largest);
}
}
void heapsort() {
for (int i = n/2-1; i >= 0; -- i)
heapify(n, i);
for (int i = n-1; i >= 0; -- i) {
swap(a[i], a[0]);
heapify(i, 0);
}
}
int main() {
cin >> n;
for (int i = 0; i < n; ++ i)
cin >> a[i];
heapsort();
for (int i = 0; i < n; ++ i)
cout << a[i] << " ";
return 0;
}