Cod sursa(job #3214267)

Utilizator YuzukyIstrate Andreea Ruxandra Yuzuky Data 13 martie 2024 23:42:53
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.06 kb
#include <iostream>
#include <fstream>

using namespace std;
ifstream in("algsort.in");
ofstream out("algsort.out");
const int MAX = 500000;
int v[MAX+1], vec[MAX+1];

void mergesort(int a[], int left, int right)
{
    if(left==right) // Un singur element, deci "vectorul" format din acest singur element este sortat
        return;  // Ne intoarcem
    int mij=(left+right)/2;  //mijlocul vectorului
    mergesort(a, left, mij); //sortam stanga
    mergesort(a, mij+1, right); //sortam dreapta

    //interclasare
        int i=left, j=mij+1, k=0;
        while(i<=mij && j<=right)
            if(a[i]<a[j])
                vec[++k]=v[i++];
            else
                vec[++k]=a[j++];
        while(i<=mij)
            vec[++k]=v[i++];
        while(j<=right)
            vec[++k]=a[j++];
        for(i=left, j=1; i<=right; i++, j++)
            a[i]=vec[j];
}
int main()
{
    int n;
    in>>n;
    for(int i=0; i<n; ++i)
        in>>v[i];
    mergesort(v, 0, n-1);
    for(int i=0; i<n; ++i)
        out<<v[i]<<" ";
    return 0;
}