Cod sursa(job #1157839)

Utilizator TibixbAndrei Tiberiu Tibixb Data 28 martie 2014 19:20:40
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <fstream>

using namespace std;

int n, v[500003], w[500003], k, i, j;

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

void interclasare (int st, int mid, int dr) {
    int k = st-1;
    int i = st;
    int j = mid+1;
    while (i<=mid && j<=dr)
        if (v[i] < v[j]) {
            w[++k] = v[i++];
        } else {
            w[++k] = v[j++];
        }
    for (;i<=mid;i++)
        w[++k] = v[i];
    for (;j<=dr;j++)
        w[++k] = v[j];
    for (i=st; i<=dr; i++)
        v[i] = w[i];
}

void sortare(int st, int dr) {
    if (st < dr) {
        int mid = (st + dr)/2;
        sortare(st, mid);
        sortare(mid+1, dr);
        interclasare(st, mid, dr); //consider sirul de la st la mid sortat, sirul de la mid+1 la dr sortat si trebuie sa le interclasez
    }
}

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

    sortare(1, n);

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


    return 0;
}