Cod sursa(job #2176918)

Utilizator baiatu.danielaBaiatu Bianca baiatu.daniela Data 18 martie 2018 11:27:32
Problema Sortare prin comparare Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#include <iostream>

using namespace std;
const int N=500005;
int v[N],n;
void citeste()
{
    int i;
    ifstream fin("algsort.in");
    fin>>n;
    for(i=1; i<=n; i++)
        fin>>v[i];
}
void scrie()
{
    int i;
    ofstream fout("algsort.out");
    for(i=1; i<=n; i++)
        fout<<v[i]<<' ';
    fout<<'\n';
}
int poz(int i, int j)
{
    int x=v[i],s[N],d[N],k=0,l=0,q=i;
    for(int poz=i+1; poz<=j; poz++)
    {
        if(v[poz]<=v[i])
            s[++k]=v[poz];
        else
            d[++l]=v[poz];
    }
    for(int poz=1; poz<=k; poz++)
        v[q++]=s[poz];
    v[q++]=x;
    for(int poz=1; poz<=l; poz++)
        v[q++]=d[poz];
    return i+k;
}
void sortare(int i, int j)
{
    if(i<=j)
    {
        int k=poz(i,j);
        sortare(i,k-1);
        sortare(k+1,j);
    }
}

int main()
{
    citeste();
    sortare(1,n);
    scrie();
    return 0;
}