#include #include #include "crearreglo.h" #include "insertion.h" #include "merge_sort.h" #include "heapsort.h" int main() { int i,rep10,N; /* N número de elementos del arreglo */ /* rep10 contador para promedio 10 iteraciones */ /* i contador para llenar el arreglo */ int *A,*B,*C; /* Punteros a arreglos de tamaño N con n desde 50 hasta 5000 (de 50 en 50 serian 100 iteraciones *10 1000 en total) */ float tiempo_is=0.0, tiempo_ms=0.0, tiempo_hs=0.0; /* variable real para almacenar tiempos de ordenamiento */ FILE *fp; fp=fopen("gnuplot.dat","w"); /* la siguiente linea indica el rango de tamaños de arreglos a ordenar: N (indicado 1000). En Linux funciona haciendose cada vez mas lento hasta aprox. 3800 Sobre ese rango, en Linux-RCE el programa es terminado automaticamente */ for (N=50;N<1000;N=N+50) { for (rep10=1;rep10<=10;rep10++) /* se repite 10 veces cada algoritmo para tomar un promedio */ { A=crearreglo(N); /* Llena arreglo con numeros aleatorios */ B=copiarreglo(NULL,A,N); /* copia el arreglo A a B en otro espacio de memoria */ C=copiarreglo(NULL,A,N); /* copia el arreglo A a C en otro espacio de memoria */ tiempo_is=tiempo_is+insertion(A,N); /* los tiempos se suman 10 veces */ tiempo_ms=tiempo_ms+mergesort(B,N); tiempo_hs=tiempo_hs+heapsort(C,N); } tiempo_is=tiempo_is/10; /* los tiempos se dividen por 10 para tener el promedio */ tiempo_ms=tiempo_ms/10; tiempo_hs=tiempo_hs/10; /* descomentar la siguiente linea si se quiere salida a pantalla de los numeros */ /* printf("%d \t %0.0f \t %0.0f \t %0.0f \t \n",N,tiempo_is,tiempo_ms,tiempo_hs); */ fprintf(fp,"%d \t %0.0f \t %0.0f \t %0.0f \t \n",N,tiempo_is,tiempo_ms,tiempo_hs); } fclose(fp); system("gnuplot graph.gnu"); /* indica ejecutar el programa externo para graficar */ }