Cod sursa(job #611192)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 31 august 2011 10:46:25
Problema Sortare prin comparare Scor 100
Compilator c Status done
Runda Arhiva educationala Marime 0.71 kb
#include <stdio.h>
FILE *in,*out;
int n,v[500001];
void qsort(int,int);
void swap(int *a,int *b);

int main(){
    int i;
    in=fopen("algsort.in","r");
    out=fopen("algsort.out","w");
    fscanf(in,"%d",&n);
    for(i=1;i<=n;i++)fscanf(in,"%d",&v[i]);
    qsort(1,n);
    for(i=1;i<=n;i++)fprintf(out,"%d ",v[i]);
    fclose(in);
    fclose(out);
}

void qsort(int st,int dr){
    int i=st,j=dr,mid=v[(i+j)/2];
    while(i<j){
        while(v[i]<mid)i++;
        while(v[j]>mid)j--;
        if(i<=j){
            swap(&v[i],&v[j]);
            i++;j--; };
    }
    if(i<dr)qsort(i,dr);
    if(j>st)qsort(st,j);
}

void swap(int *a,int *b){
    int c;
    c=*a;
    *a=*b;
    *b=c;
}