Pagini recente » Cod sursa (job #3209154) | Cod sursa (job #3151141) | Cod sursa (job #2558816) | Cod sursa (job #1993682) | Cod sursa (job #3238369)
#include <bits/stdc++.h>
using namespace std;
class Task {
public:
void solve() {
read_input();
get_result();
print_output();
}
private:
int n;
vector<int> v;
void read_input() {
ifstream fin("algsort.in");
fin >> n;
v.resize(n);
for (int i = 0; i < n; i++) {
fin >> v[i];
}
fin.close();
}
void heapify(int size, int i) {
int largest = i;
int left = 2 * i + 1;
int right = 2 * i + 2;
if (left < size && v[left] > v[largest])
largest = left;
if (right < size && v[right] > v[largest])
largest = right;
if (largest != i) {
swap(v[i], v[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(v[0], v[i]);
heapify(i, 0);
}
}
void get_result() {
heapSort();
}
void print_output() {
ofstream fout("algsort.out");
for (int i = 0; i < n; i++) {
fout << v[i] << " ";
}
fout.close();
}
};
int main(void) {
ios::sync_with_stdio(false);
Task task;
task.solve();
return 0;
}