#include "include/stdlib.h" #include "include/stdio.h" #include "include/time.h" /*Bibliotecas a incluir para el uso de función gettimeofday*/ #include "include/unistd.h" #include "include/fcntl.h" #include "include/assert.h" #include #define MAXSIZE 1000 #define N 40 /* Nº de iteraciones para cada tamaño de arreglo */ #define SWAP(x, y) temp = (x); (x) = (y); (y) = temp int a,b,e,i,j,k,t=0,d; long Sumaheap,Sumaquick,Sumaradix,Promedioheap,Promedioquick,Promedioradix,key,antes,despues; float Desvradix,Desvheap,Desvquick,Eradix,Equick,Eheap,E2radix,E2quick,E2heap,sop; typedef int keytype; FILE *fp,*fp1; /*Puntero a archivo para utilización con fprintf()*/ struct timeval timereal; /*Declaración de estructuras tipo timeval y timezone, estos tipos son predefinidos*/ struct timezone timez; struct timeval *tv; /*Declaración de punteros a estructuras para utilizarlos como parámetros en función gettimeofday() */ struct timezone *tz; main(int argc,char *argv[]) { fp=fopen( "gnuplot.dat","w"); fp1=fopen( "desv.dat","w"); tv=&timereal; /*Punteros apuntando a las dos estructuras anteriormente definidas*/ tz=&timez; if(argc!=2){printf("Revisar parámetros en la llamada al programa\n");exit(1);} /* Se verifica número de parámetros entregados al llamar la función, en caso de error informa y sale del programa*/ a=atoi(argv[1]); /*Convierte el argumento entregado al llamar la función a valor entero*/ if((a>MAXSIZE)||(a==0)){printf("El tamaño del arreglo debe ser menor o igual a 1000\n"); exit(1);} /* Se verifica el cumplimiento de las restricciones para el argumento(nº entero entre 1 y 1000, en caso de error informa y sale*/ d=a/30; if(d<=1)b=1;else b=(int)d; /* La variable b corresponde al tamaño del paso entre puntos consecutivos de la gráfica,aproxima por el entero superior*/ for(i=b;i<=a;i=i+b) /* Se toma 30 (arreglos de distinto tamaño)puntos para cada gráfica, este número no es fijo pues depende de la aproximación de la variable b al transformarla a entero+/ */ { Eheap=Equick=Eradix=E2heap=E2quick=E2radix=0; for(k=0;klo) { i = lo; j = up; tempr = r[lo]; while (itempr;j-- ); for ( r[i]=r[j];i=1;k--) { i = k; x=a[i]; while ((j=2*i)<=n){ if (j=a[j])break; /* En caso de cumplirse la condición se "rompe" el ciclo*/ a[i]=a[j];i=j; } a[i]=x; } while (n>1){ x=a[n];a[n]=a[1];n--; i=1; while((j=2*i)<=n){ if (j=a[j])break; /* En caso de cumplirse la condición se "rompe" el ciclo*/ a[i]=a[j];i=j; } a[i]=x; } } /***************************************************************************************/ #define DIGITOS 10 #define SHIFT 1 #define BASE (1<>(SHIFT*digit))%(BASE)]++;} sum=cuenta[0]; cuenta[0]=0; for(i=1;i>(SHIFT*digit))%BASE]++]=ar[i]; } for(i=0;i