Cod sursa(job #2604436)

Utilizator NoodlesAndi Domnulete Noodles Data 22 aprilie 2020 17:34:19
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.01 kb
#include <iostream>
#include <fstream>

using namespace std;

ifstream f("algosort.in");
ofstream f2("algosort.out");

void heapify(int arr[], int n, int i){
    int largest = i;
    int st = i * 2 + 1;
    int dr = i * 2 + 2;

    if(st < n && arr[st] > arr[largest]){
        largest = st;
    }

    if(dr < n && arr[dr] > arr[largest]){
        largest = dr;
    }

    if(largest != i){
        swap(arr[i], arr[largest]);
        heapify(arr, n, largest);
    }
}

void HeapSort(int arr[], int n){
    int indexStr = n / 2 - 1;
    for(int i = indexStr; 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 Print(int arr[], int n){
    for(int i = 0; i < n; i++){
        f2 << arr[i] << " ";
    }
}

int main()
{
    int n, arr[500001];
    f >> n;
    for(int i = 0; i < n; i++){
        f >> arr[i];
    }

    HeapSort(arr, n);
    Print(arr, n);

    return 0;
}