Cod sursa(job #1815695)

Utilizator AeroHHorea Stefan AeroH Data 25 noiembrie 2016 17:51:56
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.9 kb
#include <stdio.h>
#include <stdlib.h>

int *pivot(int *a,int n)
{
    int ii=1,jj=0,aux;
    int *pi=a,*pj=a+n-1;

    while(pi<pj)
    {
        if(*pi>*pj)
        {
            aux=*pi;
            *pi=*pj;
            *pj=aux;

            ii=1-ii;
            jj=1-jj;
        }

        pi+=ii;
        pj-=jj;
    }

    return pi;
}

void sort(int *a,int n)
{
    if(n<=1) return;

    int *p=pivot(a,n);

    sort(a,p-a);
    sort(p+1,n-1-(p-a));
}


void afis(int *a,int n)
{
    for(int i=0;i<n;++i)
        printf("%d ",*(a+i));
}

void read(int **a,int *n)
{
    int i;
    scanf("%d",n);
    *a=(int*) malloc((*n)*sizeof(int));

    for(i=0;i<*n;++i)scanf("%d",*a+i);
}
int main()
{
    freopen("algsort.in","r",stdin);
    freopen("algsort.out","w",stdout);

    int *a,n;

    read(&a,&n);

    sort(a,n);

    afis(a,n);


    return 0;
}