Cod sursa(job #2739475)

Utilizator serafimalex2001Serafim Alex serafimalex2001 Data 8 aprilie 2021 12:51:30
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;

ifstream fin("algsort.in");
ofstream fout("algsort.out");

vector<int> v, sorted;
int n;

void Sift(vector<int> &v, int N, int i){
    int son = 2*i + 1;
    while(son < N){
        if(2*i+2 < N && v[2*i+2] < v[2*i+1] )
            son = 2*i+2;
        if(v[son] >= v[i])
            break;
        swap(v[i], v[son]);
        i = son;
        son = 2* i +1;
    }
}

void Read(){
    int x;
    fin >> n;
    for(int i = 0; i<n; ++i)
    {
        fin >> x;
        v.push_back(x);
        swap(v[0], v[i]);
        Sift(v, i + 1, 0);
    }
    for(int i = 0; i<n; ++i)
        cout << v[i] << " ";
}

void HeapSort(){
    int i,j;
    while(n > 0){
        sorted.push_back(v[0]);
        swap(v[0], v[n-1]);
        n--;
        Sift(v,n, 0);
    }
    for(int i = 0; i<sorted.size(); ++i){
        fout<<sorted[i]<<" ";
    }

}

int main()
{
    Read();
    HeapSort();
    return 0;
}