Estructuras de Datos y Algoritmos (A) - complejidad del tiempo y la complejidad del espacio

Estructuras de Datos y Algoritmos (A) - complejidad del tiempo y la complejidad del espacio

Primero en un alma de triple a preguntar:

1: ¿Por qué la complejidad del tiempo y la complejidad espacial de estas cosas?

2, la complejidad de tiempo y la complejidad del espacio de qué cosas?

3, la forma de determinar el momento de una complejidad algorítmica y complejidad espacio.

En primer lugar, ¿por qué complejidad del tiempo y la complejidad espacial de estas cosas?

Al principio es posible que no se preocupan por la eficiencia problema que muchas personas encuentran escritura directa de un algoritmo para lograr una escena en el trabajo práctico, siempre y cuando realizar la función muy bien. No vi nada en la pequeña cantidad de datos, el crecimiento explosivo de la cantidad de datos pero cuando se escribe un algoritmo mal podría traer un desastre para el sistema. Es bueno para escribir un algoritmo para medir cuánta gente va a pensar que la primera vez, la ejecución rápida y fácil de leer. Pocas personas mencionan otro indicador clave de la provincia no es así ahorrar espacio. Se podría decir que este hardware ahora también se ven a la edad de avanzada, sin embargo, este entendimiento es muy estrecha. Cuando el crecimiento explosivo en la cantidad de datos por un pequeño espacio de memoria y tiempo de ejecución de cada milisegundo, será infinitamente ampliada. En las limitaciones de los recursos de hardware del siglo pasado, más aún, por lo que los científicos han propuesto un algoritmo para medir la complejidad del tiempo y el espacio complejidad del concepto.

En segundo lugar, ¿cuál es la complejidad de tiempo y la complejidad espacial.

Cuando el análisis algoritmo, el número total de ejecuciones declaraciones T (n) n es una cuestión del tamaño de una función, a continuación, analizar T (n) con n y determinar los cambios en T (n) del orden de magnitud. La complejidad de tiempo del algoritmo, el algoritmo es una medida de tiempo, que se denota por: T (n) = O (f (n)). N representa un problema que aumenta con el tamaño, el tiempo de ejecución del algoritmo es las mismas tasas de crecimiento y el crecimiento de f (n), llamado asintótica tiempo complejidad del algoritmo, referidos como complejidad de tiempo. Donde f (n) es una función del tamaño del problema n. O mayúscula () para reflejar la complejidad del tiempo de la notación algoritmo, lo que llamamos el gran notación S. En general, como n aumenta el tamaño de la entrada, T (n) algoritmo es el más lento algoritmo óptimo crecimiento.

Espacio complejidad del espacio de almacenamiento requerido por un algoritmo de cálculo implementado, la complejidad espacial del algoritmo conoce como la fórmula: S (n) = O (f (n)), en donde, n-escala del problema es, f (n ) en función de la declaración n ocupaba el espacio de almacenamiento. En general, estamos utilizando la "complejidad de tiempo" para referirse a las necesidades de tiempo de ejecución, que es usar la "complejidad espacial" se refiere a los requisitos de espacio.

Sobre la complejidad temporal del algoritmo y la complejidad de la fórmula para la derivación de espacio más complejo, los estudiantes interesados ​​pueden ir a Google a Wikipedia para averiguar.

En tercer lugar, la forma de determinar el momento de una complejidad algorítmica y complejidad espacio.

* Todos los sustituido por una adición constante de 1 constante de tiempo de ejecución.

El siguiente código, ningún ciclo:

         int suma = 0; 
         System.out.println ( "Hola");
         System.out.println ( "Hola");
         System.out.println ( "Hola");
         System.out.println ( "Hola");
         suma = (1 + n) * n / 2;

* El número de carreras en función de la versión revisada, manteniendo sólo el término más alto orden.

El siguiente código, hay una constante, hay un bucle doble, un bucle se ejecuta N a N veces

Los dos anidado para es N ^ 2. , Donde el tiempo es la complejidad computacional del algoritmo será mirar la mayoría, esto es n ^ 2.

        int i, j, n = 100; 
        for (i = 0; i <n; i ++) {
            for (j = 0; j <n; j ++) {
                System.out.println ( "Hola");
           }
       }

* Si existe el término más alto orden y no es 1, el término constante se multiplica con la eliminación.

El siguiente código: Porque cuando i = 0, el bucle se ejecuta n veces, cuando i = 1, el bucle se ejecuta n-1 veces ...... cuando i = n-1, el bucle interno se ejecuta una vez, por lo que el total de ejecuciones deben ser:

n + (n-1) + (n-2) + ... + 1 = n (n + 1) / 2 n (n + 1) / 2 = n ^ 2/2 + n / 2 primero ignorada, porque no hay suma constante.

El segundo de retención sólo el elemento más alto, por lo que el n / 2 esta eliminado.

En tercer lugar, la eliminación de la más alta y se multiplica por un término constante, para dar el O final (n ^ 2).

        int i, j, n = 100; 
        for (i = 0; i <n; i ++)
       {
            for (j = i; j <n; j ++)
           {
                 System.out.println ( "Hola");
           }
       }

* El resultado final es el gran O-orden.

Publicado una foto de ella:

659

eficiencia figura correspondiente lineal:

603

Los tiempos típicos de la complejidad del tiempo pasado en orden ascendente es: O (1) <O (log n) <(n) <O (nlogn) <O (n ^ 2) <O (n ^ 3) <O ( 2 ^ n) <O (n!) <O (n ^ n)

En general, estamos utilizando la "complejidad de tiempo" para referirse a las necesidades de tiempo de ejecución, que es usar la "complejidad espacial" se refiere a los requisitos de espacio. Cuando buscamos hacer "complejidad" directa por lo general se refiere a la complejidad del tiempo.

Apresurarse a juzgar al respecto, vistazo en el tiempo y el espacio se escribe la complejidad del algoritmo. Aquí hay un par de estructuras de datos y algoritmos son un lugar bueno para la práctica, probablemente la mayoría de los estudiantes han utilizado, es decir,

[Leecode] https://leetcode.com/

En lo anterior respondido cada vez que pregunta presentada allí, la evaluación de una complejidad de su tiempo y el espacio algoritmos de retroalimentación, grande, esto es largo:

imagen-20200320194830953

Precipitarse a intentarlo.

Supongo que te gusta

Origin blog.51cto.com/14745357/2480558
Recomendado
Clasificación