Cod sursa(job #651787)

Utilizator yonnssyonns yonns yonnss Data 21 decembrie 2011 16:56:00
Problema Sortare prin comparare Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 1.12 kb
#include <stdio.h>
#include <stdlib.h>
#define MAX 500008
void quicksort(int vect[MAX],int ls,int ld);
void citeste(int v[MAX],int &n){
    FILE *in=fopen("algsort.in","r");
    fscanf(in,"%d",&n);
    int i;
    for(i=0;i<n;i++) fscanf(in,"%d",&v[i]);
    fclose(in);
}

void interschimba(int &a, int &b){
    int t;
    t=a;
    a=b;
    b=t;
}
void quicksort(int vect[MAX],int ls,int ld){
int min = ls , max= ld;
int mijloc=vect[(ls+ld)/2];
while(min<=max){
while(vect[min]<mijloc) min++;
while(vect[max]>mijloc) max--;

if(min<=max) {

    interschimba(vect[min],vect[max]);
    max--;
    min++;
}

}
if(ls<max) quicksort(vect,ls,max);
if(min<ld)  quicksort(vect,min ,ld);

}

void afiseaza(int v[MAX],int n){
int i;
FILE *out=fopen("algsort.out","w");
for(i=0;i<n;i++) fprintf(out,"%d ",v[i]);
fprintf(out,"\n");
fclose(out);

}
int comp ( const void * a, const void *b){

    return ( *(int*)a - *(int*)b );
}
int main(){
   int vector[MAX];
   int n;
   citeste(vector,n);


    qsort(vector,n,sizeof(int),comp);
//   quicksort(vector,0,n-1);

 afiseaza(vector,n);
return 0;
}