Cod sursa(job #1943158)

Utilizator DavidDSVVoicu David-Sebastian DavidDSV Data 28 martie 2017 13:05:30
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.05 kb
#include <fstream>
using namespace std;
ifstream f("algsort.in");
ofstream g("algsort.out");

int n, a[500001],b[500001];
void interclasare(int st, int m, int dr){
    int x=st;
    int k=1;
    int y=m+1;
    while(x<=m&&y<=dr){
        if(a[x]<a[y]){
            b[k]=a[x];
            x++;
        }
        else{
            b[k]=a[y];
            y++;
    }
    k++;
    }
    while(x<=m){
        b[k]=a[x];
        k++;
        x++;
    }
    while(y<=dr){
        b[k]=a[y];
        k++;
        y++;
    }
    k--;
    int t=st;
    int i;
    for(i=1;i<=k;i++){
        a[t]=b[i];
        t++;
    }
}


void divimp(int st, int dr){
    int mij;
    if(dr-st<=1){
        if(a[st]>a[dr])
            swap(a[st],a[dr]);
    }
    else{
        mij=(st+dr)/2;
        divimp(st,mij);
        divimp(mij+1,dr);
        interclasare(st,mij,dr);
    }
}
int main()
{
    int i;
    f>>n;
    for(i=1;i<=n;i++){
        f>>a[i];
    }
    divimp(1,n);
    for(i=1;i<=n;i++){
        g<<a[i]<<" ";
    }
}