Cod sursa(job #1310309)

Utilizator mariusn01Marius Nicoli mariusn01 Data 6 ianuarie 2015 17:55:44
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb

#include <fstream>
#include <iostream>

using namespace std;

int n, i, v[500010], c, p;


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

    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];

    for (i=2;i<=n;i++) {
        c = i;
        p = i/2;
        while (p != 0) {
            if (v[c] > v[p])
                swap(v[c], v[p]);
            else
                break;
            c = p;
            p = p/2;
        }
    }

    for (i=n;i>=2;i--) {
        swap(v[1], v[i]);
        p = 1;
        c = 2;
        while (c <= i-1) {
            if (c+1 <= i-1 && v[c+1] > v[c])
                c++;
            if (v[c] > v[p]) {
                swap(v[c], v[p]);
            } else
                break;
            p = c;
            c = 2*c;
        }
    }

    for (i=1;i<=n;i++)
        fout<<v[i]<<" ";

    return 0;
}