Estructura de datos DOS

Estructura de datos DOS

1. Algoritmo

El algoritmo es una colección de instrucciones, una serie de operaciones prescritas para resolver problemas característicos. Es un proceso computable claramente definido que toma un conjunto de datos como entrada y produce un conjunto de datos como salida.
Un algoritmo generalmente tiene las siguientes cinco características:
1) Entrada: Un algoritmo debe tomar la información del problema a resolver como entrada.
2) Salida: Ingrese la información obtenida después de que se procese el conjunto de instrucciones correspondiente.
3) Viabilidad: El algoritmo es factible, es decir, cada instrucción en el algoritmo es alcanzable y se puede completar en un tiempo limitado.
4) Finitud: El número de instrucciones ejecutadas por el algoritmo es limitado, y cada instrucción se completa en un tiempo finito, por lo que el algoritmo completo también se puede completar en un tiempo finito.
5) Determinismo: para una entrada legal específica, la salida correspondiente del algoritmo es única. Es decir, cuando el algoritmo comienza a partir de una entrada específica, el resultado de ejecutar el mismo conjunto de instrucciones varias veces es siempre el mismo.
En pocas palabras, un algoritmo es el proceso de resolución de problemas por computadora.
En este proceso, ya sea que se esté formando una idea de resolución de problemas o escribiendo un programa, se implementa un cierto algoritmo.
La primera es la forma lógica del algoritmo y la última es la forma de código del algoritmo.

2. Definición de complejidad del tiempo

1. Frecuencia de tiempo:
El tiempo que consume un algoritmo para ejecutarse no se puede calcular teóricamente y solo se puede conocer ejecutando una prueba en la computadora.
Pero es imposible e innecesario para nosotros probar todos los algoritmos en la computadora.
El tiempo empleado por un algoritmo es directamente proporcional al número de ejecuciones de la declaración en el algoritmo. Cuanto mayor es el número de ejecuciones de la declaración en el algoritmo, más tiempo toma.
El número de ejecuciones de oraciones en un algoritmo se denomina frecuencia de oraciones o frecuencia de tiempo, que se expresa como T (n), y n representa la escala del problema.

2. Complejidad del tiempo (la siguiente tontería es el mismo orden de frecuencia de tiempo),
pero a veces queremos saber qué ley presenta cuando cambia, y queremos saber la escala del problema, no el número específico de veces. esta vez, se introduce la complejidad del tiempo.
En general, el número de ejecuciones repetidas de la operación básica en el algoritmo es una función de la escala del problema n, representada por T (n),
si hay una función auxiliar f (n), de modo que cuando n tiende a infinito, T (El valor límite de n) / f (n) es una constante que no es igual a cero, por lo que f (n) es una función del mismo orden de magnitud de T (n).
Denotado como T (n) = O (f (n)), llame a O (f (n)) la complejidad temporal progresiva del algoritmo, denominada complejidad temporal.
T (n) = O (f (n))
o: La complejidad del tiempo es la frecuencia de tiempo para eliminar el término de orden inferior y la primera constante.
Nota: La frecuencia del tiempo y la complejidad del tiempo son diferentes. La frecuencia del tiempo es diferente, pero la complejidad del tiempo puede ser la misma.
Por ejemplo: la frecuencia de tiempo de ciertos dos algoritmos es T (n) = 100000n2 + 10n + 6 T (n) = 10n2 + 10n + 6 T (n) = n2
pero la complejidad del tiempo es T (n) = 0 (n2 ) De hecho, es el mismo orden en números más altos, y se hace comparando el orden más alto, skr ~

3. Peor complejidad de tiempo y complejidad de tiempo promedio La
peor complejidad de tiempo se denomina la peor complejidad de tiempo. En términos generales, la complejidad de tiempo discutida es la complejidad de tiempo del peor de los casos.
La razón de esto es: la complejidad del tiempo en el peor de los casos es el límite superior del tiempo de ejecución del algoritmo en cualquier instancia de entrada, lo que garantiza que el tiempo de ejecución del algoritmo no sea más largo que cualquiera.
En el peor de los casos, la complejidad del tiempo es T (n) = O (n), lo que significa que para cualquier instancia de entrada, el tiempo de ejecución del algoritmo no puede ser mayor que 0 (n).
La complejidad de tiempo promedio se refiere al tiempo de ejecución esperado del algoritmo cuando todas las instancias de entrada posibles aparecen con la misma probabilidad. En
primer lugar, en vista de la complejidad promedio , es difícil de calcular. En
segundo lugar, hay muchos algoritmos cuya complejidad promedio y en el peor de los casos son iguales.
Así que, en general, discuta la peor complejidad del tiempo

El símbolo O da el límite superior de la complejidad del tiempo del algoritmo (peor caso <=) El
símbolo Ω da el límite inferior de la complejidad del tiempo (mejor caso> =)
θ da el orden preciso de la complejidad del tiempo del algoritmo (el mejor mismo orden que lo peor =)

4. Cálculo de la complejidad del tiempo

No es necesario calcular la frecuencia de tiempo en absoluto.Incluso si el proceso de cálculo aún ignora los coeficientes de constantes, potencias bajas y potencias más altas, se pueden usar los siguientes métodos simples:
(1) Descubra las declaraciones básicas en el
algoritmo; la que se ejecuta con más frecuencia en el algoritmo Esa oración es la oración básica, generalmente el cuerpo del bucle del bucle más interno.
(2) Calcule el orden de magnitud del número de ejecuciones del enunciado básico;
solo es necesario calcular el orden del número de ejecuciones del enunciado básico, lo que significa que siempre que la potencia más alta en función del número de ejecuciones de la declaración básica es correcta,
todas las sumas de baja potencia se pueden ignorar El coeficiente de la potencia más alta. Esto simplifica el análisis del algoritmo y centra la atención en el punto más importante: la tasa de crecimiento.
(3) El rendimiento temporal del algoritmo está representado por una notación de cero grande.
Ponga la magnitud del número de ejecuciones de la declaración básica en la marca cero grande.

举例

100个简单语句的时间复杂度(100是常数,不是趋向于无穷)
Int count = 0;
……
Count = 0;
 
T(n) = 1
T(n) = O(n) = 1


循环的时间复杂度
int n = 8,count = 0;
for(int i = 0 ;i<=n;i++)
count++T(n) = n
T(n) = O(n) = n

int n = 8,count = 0;
for(int i = 0 ;i<=n;i*=2)
count++O(log2n)





int n = 8,count = 0;
for(int i = 0 ;i<=n;i++)
for(int j= 0 ;j<=n;j++)
count++O(n2)



int n = 8,count = 0;
for(int i = 0 ;i<=n;i*=2)
for(int j= 0 ;j<=n;j++)
count++O(n*log2n)


int n = 8,count = 0;
for(int i = 0 ;i<=n;i*=2)
for(int j= 0 ;j<=i;j++)
count++1+2+3++n = (n+1)*n/2

O(n2)
常用的时间复杂度的级别排行
常数阶O(1)
对数阶O(log2n)
线性阶O(n)
线性对数阶O(n*log2n)
平方阶O(n2)
立方阶O(n3)
…
K次方阶O(nk)
指数阶O(2n)
阶乘阶O(n!)
越往下执行的时间就越多

complejidad del tiempo5. Complejidad del espacio
La capacidad de almacenamiento del algoritmo incluye:
1. El espacio ocupado por el programa en sí mismo
2. El espacio ocupado por los datos de entrada;
3. El espacio ocupado por las variables auxiliares El espacio ocupado por los
datos de entrada depende solo de el problema en sí, y no tiene nada que ver con el algoritmo Necesidad de analizar el espacio extra que ocupan las variables auxiliares distintas de las entradas y los programas.
La complejidad del espacio es una medida de la cantidad de espacio de almacenamiento que ocupa temporalmente un algoritmo durante su funcionamiento. Generalmente también se da como una función del tamaño del problema n, dado en forma de magnitud, denotado como: S (n) = O (g (n))

Nota:
1. La complejidad del espacio es menor que el análisis de complejidad del tiempo
. 2. Para los algoritmos recursivos, el código es generalmente más corto y el algoritmo en sí ocupa menos espacio de almacenamiento, pero requiere más unidades de trabajo temporales durante el tiempo de ejecución.;
Si se escribe como un algoritmo no recursivo, el código generalmente puede ser más largo y el algoritmo en sí ocupa más espacio de almacenamiento, pero puede requerir menos unidades de almacenamiento en tiempo de ejecución.

Supongo que te gusta

Origin blog.csdn.net/MAKEJAVAMAN/article/details/106785746
Recomendado
Clasificación