• Sábado 14 de Diciembre de 2024, 14:52

Autor Tema:  Clock(); Y Sistemas De Ordenamiento.  (Leído 886 veces)

Valtiel

  • Nuevo Miembro
  • *
  • Mensajes: 9
    • Ver Perfil
Clock(); Y Sistemas De Ordenamiento.
« en: Lunes 28 de Mayo de 2007, 20:08 »
0
Se me pidio confeccionar un programa en C que utilize varios metodos de ordenamiento sobre un arreglo de X elementos (en este caso 25000). Sobre esto tengo las siguientes 3 dudas:

-¿Es normal que el metodo de ordenamiento Burbuja demore significativamente menos que el metodo de Seleccion?, puesto que ordenar la matriz mediante el primer me toma tan solo 2 segundos, en cambio con el segundo 177.

-Que puedo hacer para que no me muestre el tiempo que demora en ordenar la matriz en cifras redondas ?, puesto que el tiempo me lo imprime por ejemplo asi: 2.00000 segundos, 3.00000 segundos, etc. (creo que tiene que ver con la constanste CLK_TCK que estoy utilizando para divir la diferencia de los tiempos de inicio y fin).

-Si a la funcion Bubble le agrego una variable para calcular la cantidad de intercambios que realiza, para luego imprimirla en la funcion principal, el tiempo que demora en ordenar la matriz baja en 1 segundo: ordenandola sin calcular ni imprimir la cantidad de comparaciones le lleva 2 segundos, en cambio, calculando e imprimiendo la variable "inter" junto con ordenar la matriz le toma 1 segundo. Que pasa ahí?.

Saludos y gracias de antemano.

Estas son algunas partes del programa:


...
#define MAX 25000

int Globx=0;

int Bubble(int A3[],int MAX3)
{
   int i,k,AUX,inter=0;

   for(i=1;i<MAX3;i++)
   {
      for(k=0;k<MAX3-1;k++)
   {
      if(A3<A3[k])
      {
         AUX=A3;
         A3=A3[k];
         A3[k]=AUX;
         inter=inter+1;
      }
   }
}

return inter;

}

int Menor(int A5[],int MAX5)
{
   int i,j,menor=0;

   for(i=0;i<MAX5-1;i++)
   {
      menor=i;

      for(j=i+1;j<MAX5;j++)
      {
         if (A5[menor] > A5[j])
         {
            menor=j;
         }
      }
   }

return menor;

}

int Seleccion(int A4[],int MAX4)
{
   int i,AUX,pos_men;
   for(i=0;i<MAX4-1;i++)
   {
      pos_men=Menor(A4,MAX4);
      AUX=A4;
      A4=A4[pos_men];
      A4[pos_men]=AUX;
   }

   return 0;

}

.......

int A[MAX],i;
float t1;

void main()
{
   randomize();
   for(i=0;i<MAX;i++)
   {
      A=random(20000)+1;
   }

//Determinacion de tiempo de ordenamiento mediante Bubblesort.
   int inter;
   inter=Bubble(A,MAX);
   Globx=Globx+1;
   t1=DetTiempo(A,MAX);
   printf("Burbuja demora %f segundos en ordenar la matriz, realizando %d intercambios.",t1,inter);
   printf("\n\nPresione cualquier tecla para continuar");
   getche();

   //Determinacion de tiempo de ordenamiento mediante Selection Sort.
   Globx=Globx+1;
   t1=DetTiempo(A,MAX);
   printf("\n\nSelection Sort demora %f segundos en ordenar la matriz.",t1);
   printf("\n\nPresione cualquier tecla para continuar");
   getche();

...

getche();
}