Cod sursa(job #2354667)

Utilizator al3xionescuIonescu Alexandru al3xionescu Data 25 februarie 2019 14:46:05
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include<bits/stdc++.h>
using namespace std;
int a[500005], n;
void heapify(int arr[], int n, int i) {
    int largest = i;
    int l = 2*i + 1;
    int r = 2*i + 2;
    if (l < n && arr[l] > arr[largest]) {
        largest = l;
    }
    if (r < n && arr[r] > arr[largest]) {
        largest = r;
    }
    if (largest != i) {
        swap(arr[largest], arr[0]);
        heapify(arr, n, largest);
    }
}
void heapSort(int arr[], int n) {
    for (int i = n / 2 - 1; i >= 0; i--) {
        heapify(arr, n, i);
    }
    for (int i = n - 1; i >= 0; i--) {
        swap(arr[0], arr[i]);
        heapify(arr, i, 0);
    }
}
void printArray(int arr[], int n) {
    for (int i = 0; i < n; i++) {
        cout << arr[i] << ' ';
    }
    cout << '\n';
}
int main(){ 
    std::cin >> n;
    for (int i = 0; i <= n; i++) {
        cin >> a[i];
    }
    heapSort(a, n);
    printArray(a, n);
    return 0;
}