Pagini recente » Cod sursa (job #384105) | Cod sursa (job #212701) | Cod sursa (job #1734317) | Cod sursa (job #2350012) | Cod sursa (job #2158222)
#include <bits/stdc++.h>
using namespace std;
int v[500005];
int n, maxHeapSize;
void downheap(int poz) {
if (poz > maxHeapSize / 2) return;
if (v[poz] < v[poz << 1] && v[poz << 1] < v[(poz << 1) + 1])
swap(v[poz], v[(poz << 1) + 1]),
downheap((poz << 1) + 1);
else if (v[poz] < v[poz << 1])
swap(v[poz], v[poz << 1]),
downheap(poz << 1);
}
void Make_Heap() {
for (int i = n / 2; i >= 1; i--)
downheap(i);
}
void Sort() {
Make_Heap();
for (int i = n; i >= 1; i--) {
swap(v[1], v[i]);
maxHeapSize--;
downheap(1);
}
}
int main() {
freopen("algsort.in", "r", stdin);
freopen("algsort.out", "w", stdout);
cin >> n;
for (int i = 1; i <= n; i++)
cin >> v[i];
maxHeapSize = n;
Sort();
for (int i = 1; i <= n; i++)
cout << v[i] << " ";
}