Cod sursa(job #2612045)

Utilizator dianapingu1Diana Vasiliu dianapingu1 Data 8 mai 2020 01:56:35
Problema Sortare prin comparare Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.07 kb
#include <iostream>
#include <vector>
#include <fstream>

using namespace std;

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

void interclasare(vector<int>& v, int st, int m, int dr)
{
    vector<int> l;
    int i=0, j=m+1;
    while (i <= m && j <= dr) {
        if (v[i] <= v[j]) {
            l.push_back(v[i]);
            i++;
        }
        else {
            l.push_back(v[j]);
            j++;
        }
    }

    while (i <= m) {
        l.push_back(v[i]);
        i++;
    }

    while (j <= dr) {
        l.push_back(v[j]);
        j++;
    }

    for (i=st; i<=dr; i++)
        v[i] = l[i-st];

}

void mergesort(vector<int>& v, int st, int dr)
{
    if (st < dr) {
        int mij = (st+dr)/2;
        mergesort(v,st,mij);
        mergesort(v,mij+1,dr);
        interclasare(v,st,mij,dr);
    }
}


int main() {

    vector<int> v;
    int n,x;
    fin>>n;
    cout<<n;
    for (int i=0; i<n; i++) {
        fin>>x;
        v.push_back(x);
    }

    mergesort(v,0,n-1);

    for (int i : v)
        fout<<i<<" ";

    fin.close();
    fout.close();
    return 0;
}