Pagini recente » Cod sursa (job #1387036) | Cod sursa (job #1077514) | Cod sursa (job #619798) | Cod sursa (job #2171289) | Cod sursa (job #2890971)
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int dim = 500005;
int a[dim], n;
void Coboara(int i) {
int left = (i<<1);
int right = (i<<1) + 1;
int maxi = i;
if (a[left] > a[maxi] && left <= n) {
maxi = left;
}
if (a[right] > a[maxi] && right <= n) {
maxi = right;
}
if (maxi != i && maxi <= n) {
swap(a[i], a[maxi]);
Coboara(maxi);
}
}
int main() {
in >> n;
for (int i=1; i<=n; i++) {
in >> a[i];
}
for (int i=n/2; i>=1; i--) {
Coboara(i);
}
int n_cpy = n;
while (n >= 1) {
swap(a[1], a[n]);
n--;
Coboara(1);
}
for (int i = 1; i <= n_cpy; ++i) {
out << a[i] << " ";
}
return 0;
}