Notas de estudio de estructura de datos (1. Conocimientos básicos y complejidad temporal y espacial)

La estructura de datos es una forma de almacenamiento y organización de datos por computadora y se refiere a una colección de elementos de datos que tienen una o más relaciones específicas entre sí.
Un algoritmo es un proceso de cálculo bien definido. Toma uno o un conjunto de valores como entrada y produce uno o un conjunto de valores como salida. En términos simples, un algoritmo es una serie de pasos de cálculo que se utilizan para convertir los datos de entrada en resultados de salida. .
Eficiencia del
algoritmo El análisis de la eficiencia del algoritmo se divide en dos tipos: el primero es la eficiencia del tiempo y el segundo es la eficiencia del espacio. La eficiencia del tiempo se llama complejidad del tiempo y la eficiencia del espacio se llama complejidad del espacio. La complejidad del tiempo mide principalmente la velocidad de ejecución de un algoritmo, mientras que la complejidad del espacio mide principalmente el espacio adicional requerido por un algoritmo En los primeros días del desarrollo de computadoras, la capacidad de almacenamiento de una computadora era muy pequeña. Así que realmente me preocupo por la complejidad del espacio. Pero después del rápido desarrollo de la industria de las computadoras, la capacidad de almacenamiento de las computadoras ha alcanzado un nivel muy alto. Por lo tanto, ya no necesitamos prestar especial atención a la complejidad espacial de un algoritmo.
1.
Definición de complejidad temporal : en informática, la complejidad temporal de un algoritmo es una función que describe cuantitativamente el tiempo de ejecución del algoritmo. El tiempo que tarda en ejecutarse un algoritmo, teóricamente, no se puede calcular, y solo puede saberlo si coloca su programa en la máquina y lo ejecuta. Pero, ¿necesitamos probar todos los algoritmos en la computadora? Se puede probar en la computadora, pero esto es muy problemático, por lo que el método de análisis de la complejidad del tiempo está disponible. El tiempo empleado por un algoritmo es proporcional al número de ejecuciones de las declaraciones en él. El número de ejecuciones de las operaciones básicas en el algoritmo es la complejidad de tiempo del algoritmo.

Notación progresiva Big O
1. Reemplace todas las constantes aditivas en el tiempo de ejecución con una constante 1.
2. En la función de frecuencia de funcionamiento modificada, solo se retienen los artículos de mayor orden.
3. Si el término de mayor orden existe y no es 1, elimine la constante multiplicada por este término. El resultado es un gran orden O.

Ejemplo:

long Fib(size_t N) 
{
return N < 2 ? N : Fib(N-1)+Fib(N-2);
}
分析发现基本操作递归了2^N次,时间复杂度为O(2^N)。

2. Complejidad del espacio La complejidad del
espacio es una medida de la cantidad de espacio de almacenamiento que un algoritmo ocupa temporalmente durante su funcionamiento. La complejidad del espacio no es cuántos bytes de espacio ocupa el programa, porque esto no tiene mucho sentido, por lo que la complejidad del espacio es el número de variables. Las reglas de cálculo de la complejidad del espacio son básicamente similares a la complejidad del tiempo, y también se utiliza la notación progresiva de O grande.
ejemplo:

long Fac(size_t N) 
{
 return N < 2 ? N : Fac(N-1)*N; 
 }
 分析发现递归调用了N次,开辟了N个栈帧,每个栈帧使用了常数个空间。空间复杂度为O(N)

Supongo que te gusta

Origin blog.51cto.com/14289397/2545647
Recomendado
Clasificación