Pagini recente » Cod sursa (job #3148646) | Cod sursa (job #2767405) | Cod sursa (job #1153320) | Cod sursa (job #2601849) | Cod sursa (job #2158257)
#include <bits/stdc++.h>
using namespace std;
int v[500005];
int n, maxHeapSize;
void downheap(int poz) {
if (!poz) return;
if (poz > maxHeapSize / 2) return;
int next = 0;
if ((poz << 1) <= maxHeapSize)
next = poz << 1;
if (next + 1 <= maxHeapSize && v[next] < v[next + 1])
next++;
if (v[next] > v[poz])
swap(v[next], v[poz]),
downheap(next);
}
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);
ios_base::sync_with_stdio(0);
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] << " ";
}