Cod sursa(job #2546282)

Utilizator mihnea03Ciocioiu Mihnea mihnea03 Data 13 februarie 2020 23:23:42
Problema Sortare prin comparare Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.97 kb
#include <fstream>
#define dim 500010
using namespace std;
int a[dim];
int b[dim];
int i,n;

void interclaseaza(int s1,int n,int s2,int m) {
    int i=s1;
    int j=s2;
    int u=0;
    while (i<=n&&j<=m) {
        if (a[i]<a[j]) {
            b[++u]=a[i];
            i++;
        }
        else {
            b[++u]=a[j];
            j++;
        }
    }
    for (i=i;i<=n;i++) {
        b[++u]=a[i];
    }
    for (j=j;j<=m;j++) {
        b[++u]=a[j];
    }
    u=0;
    for (i=s1;i<=m;i++) {
        a[i]=b[++u];
    }
}

void sorteaza (int st,int dr) {
    if (st<dr) {
        int mid=(st+dr)/2;
        sorteaza(st,mid);
        sorteaza(mid+1,dr);
        interclaseaza(st,mid,mid+1,dr);
    }
}

int main() {
    ifstream fin("algsort.in");
    ofstream fout("algsort.out");
    fin>>n;
    for (i=1;i<=n;i++) {
        fin>>a[i];
    }
    sorteaza(1,n);
    for (i=1;i<=n;i++) {
        fout<<a[i]<<" ";
    }
    return 0;
}