es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Dando diferentes tamaños a un arreglo para calcular tiempo de ejecución.

Estoy tratando de escribir un programa para calcular el tiempo de ejecución de diferentes algoritmos y para eso necesito dar diferentes tamaños a un arreglo para cada algoritmo.


Intenté usar un bucle para hacer eso pero no está funcionando como yo quería.
Aquí está mi código :

int main()
{
    clock_t TiCal;

    int size;
    for(int p = 5; p < 15; p++)          // Este bucle es para proporcionar diferentes tamaños para nuestra prueba
    {
        int arr[size];
        cout<<"El arreglo ordenado es: { ";
        for(int j = 0; j<size; j++)          // Solo queríamos probar la búsqueda binaria, así que me salté la parte de ordenar
        {
        arr[j] = j;
        cout<<arr[j]<<" ";
        }
        cout<<"}"<<endl;

        int key = 9;                            // El programa buscará la clave en el arreglo
        int n = sizeof(arr) / sizeof(arr[0]);   // n es el tamaño del arreglo

        TiCal = clock();                        // TiCal es nuestra variable para guardar el tiempo de ejecución
        int result = BinSh(arr, 0, n - 1, key);
        Sleep(1);
        TiCal = clock() - TiCal;
        cout<<"Tiempo consumido para el tamaño "<<p<<" de la búsqueda binaria es: "<< (float)TiCal/CLOCKS_PER_SEC << "segundos"<<endl;

        (result == -1) ? cout << "El elemento no está presente en el arreglo"<<endl

                       : cout << "El elemento está presente en el índice " << result<<endl;
    }

    return 0;
}
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Un problema con el código anterior es que la variable “size” no está inicializada antes de ser utilizada para declarar un arreglo. Debería ser inicializada con un valor antes de que se declare el arreglo.

    Otro problema es que el bucle en realidad no establece diferentes tamaños para el arreglo, ya que “size” mantiene el mismo valor a lo largo del bucle. En su lugar, el bucle debería asignar diferentes valores a “size” en cada iteración.

    Aquí hay una versión corregida del código con estas soluciones:

    int main()
    {
        clock_t TiCal;
    
        int size;
        for(int p = 5; p < 15; p++) 
        {
            size = pow(2, p); // establecer el tamaño del arreglo basado en la iteración del bucle
            int arr[size];
            cout<<"El arreglo ordenado es: { ";
            for(int j = 0; j<size; j++)="" {="" arr[j]="j;"></size;><arr[j]<<" ";="" }=""></arr[j]<<"><endl; int="" key="9;" int="" n="size;" tical="clock();" int="" result="BinSh(arr," 0,="" n="" -="" 1,="" key);="" sleep(1);="" tical="clock()" -="" tical;="" cout<<"tiempo="" consumido="" para="" el="" tamaño=""></endl;><p<<" de="" búsqueda="" binaria="" es:="" "<<(float)tical/clocks_per_sec<<"=""></p<<"><endl; (result="=" -1)="" cout="" <<="" "el="" elemento="" no="" está="" presente="" en="" el=""></endl;><endl :="" cout="" <<="" "el="" elemento="" está="" presente="" en="" el="" índice="" <<=""></endl><endl;
        }
    
        return 0;
    }
    

    en esta versión corregida, la variable “size” se establece en base a la iteración del bucle utilizando una función de potencia, y se utiliza para inicializar el arreglo. el tamaño utilizado para la búsqueda binaria también se establece con el mismo valor. }=”” return=”” 0;=”” }=”” “`=”” en=”” esta=”” versión=”” corregida,=”” la=”” variable=”” “size”=”” se=”” establece=”” en=”” base=”” a=”” la=”” iteración=”” del=”” bucle=”” utilizando=”” una=”” función=”” de=”” potencia,=”” y=”” se=”” utiliza=”” para=”” inicializar=”” el=”” arreglo.=”” el=”” tamaño=”” utilizado=”” para=”” la=”” búsqueda=”” binaria=”” también=”” se=”” establece=”” con=”” el=”” mismo=””></endl;
    }

    return 0;
    

    }
    “`

    en esta versión corregida, la variable “size” se establece en base a la iteración del bucle utilizando una función de potencia, y se utiliza para inicializar el arreglo. el tamaño utilizado para la búsqueda binaria también se establece con el mismo valor.>

Comments are closed.