Para estimar cuanto tiempo nos toma un algoritmo podemos usar la librería time.h, esta nos facilita 2 funciones que implementaremos con un ejemplo previo de la siguiente manera:
#include <stdio.h>
#include <time.h> /* time_t, struct tm, difftime, time, mktime */
int main ()
{
time_t inicio;
time_t fin;
double segundos;
time(&inicio); /* Obtiene el tiempo actual; también se puede: timer = time(NULL) */
/*****************************
** Aquí se inserta **
** el código a cronometrar **
*****************************/
time(&fin);
segundos = difftime(fin,inicio);
printf ("El algoritmo tomó %f segundos\n", segundos);
return 0;
}
#include <stdio.h>
#include <time.h> /* clock_t, clock, CLOCKS_PER_SEC */
int main ()
{
clock_t tiempo;
tiempo = clock();
/*****************************
** Aquí se inserta **
** el código a cronometrar **
*****************************/
tiempo = clock() - tiempo;
printf (""El algoritmo tomó %f segundos\n.\n",((float)tiempo)/CLOCKS_PER_SEC);
return 0;
}
Veamos un ejemplo de como tomar el tiempo del algoritmo de ordenación rápida:#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void quicksort(int *list, int first, int last)
{
int pivote, j, temp, i;
if( first < last )
{
pivote=first;
i=first;
j=last;
while(i<j)
{
while(list[i] <= list[pivote] && i<last) i++;
while(list[j] > list[pivote]) j--;
if(i<j)
{
temp = list[i];
list[i] = list[j];
list[j] = temp;
}
}
}
temp = list[pivote];
list[pivote] = list[j];
list[j] = temp;
if(j>first+1) quicksort(list,first,j-1);
if(j<last-1)quicksort(list,j+1,last);
}
int main()
{
clock_t tiempo;
int i;//contador
int size=10000;
srand(time(NULL));
//Creación del arreglo.
int arreglo[size];
tiempo = clock();
quicksort(arreglo,0,size-1);
tiempo = clock()-tiempo;
printf("Tardó en ordenarse %f segundos\n",((float)tiempo)/CLOCKS_PER_SEC);
return 0;
}
Ejercicios
- Medir el tiempo que toma el algorítmo de búsqueda con el arreglo ordenado y sin ordenar.
- Crear un archivo con los datos del tiempo versus la dimensión del arreglo para los algoritmos de ordenación.
No hay comentarios:
Publicar un comentario