Cod sursa(job #535999)

Utilizator sunt_emoSunt emo sunt_emo Data 17 februarie 2011 23:35:54
Problema Sortare prin comparare Scor 40
Compilator c Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>

void q_sort (int,int);
void swap (int,int);

int a[500010];

int main ()
{
    FILE *in=fopen ("algsort.in","r");
    FILE *out=fopen ("algsort.out","w");
    int i,n;
    fscanf (in,"%d",&n);
    for (i=0; i<n; i++) fscanf (in,"%d",a+i);
    q_sort (0,n);
    for (i=0; i<n; i++) fprintf (out,"%d ",a[i]); fprintf (out,"\n");
    return 0;
}

void q_sort (int l,int r)
{
    if (r>l)
    {
        int i,y=l;
        for (i=l; i<r-1; i++)
            if (a[i]<a[r-1])
            {
                swap (i,y);
                y++;
            }
        swap (y,r-1);
        q_sort (l,y); q_sort (y+1,r);
    }
}

void swap (int x,int y)
{
    int z=a[x]; a[x]=a[y]; a[y]=z;
}