Pagini recente » Cod sursa (job #2146680) | Cod sursa (job #261464) | Cod sursa (job #340874) | Cod sursa (job #2172290) | Cod sursa (job #2890972)
#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 (left <= n && a[left] > a[maxi]) {
maxi = left;
}
if (right <= n && a[right] > a[maxi]) {
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;
}