Cómo saber el orden de magnitud de un algoritmo

Supongo que te refieres a la “Gran O” de un algoritmo. Este es un tema cubierto en la mayoría de las clases introductorias de CS de la universidad y el plan de estudios AP Computer Science.

Big O describe cómo cambia el tiempo de ejecución del algoritmo en relación con el tamaño del conjunto de datos en el que está trabajando, en el peor de los casos. Esto generalmente está relacionado con la cantidad de veces que los bucles en el algoritmo deben ejecutarse en relación con el conjunto de datos, pero no con cuántos pasos están involucrados en cada iteración.

Algunos ejemplos:

Una búsqueda lineal que itera sobre una matriz sin clasificar, buscando un valor particular, es O (n), o tiempo “lineal”, a medida que la matriz se hace más grande, el peor tiempo de búsqueda aumenta linealmente. (El tiempo que lleva inspeccionar cada elemento de la matriz, de principio a fin).

Una búsqueda binaria que busca un valor en una matriz ordenada es O (log2 n), porque la mitad de la matriz se elimina cada vez que el elemento inspeccionado no es el valor de búsqueda, porque en una búsqueda binaria se sabe del valor encontrado qué mitad de la matriz restante en la que debe estar el valor deseado (si existe). Esto significa que para una matriz de longitud N, el número máximo de iteraciones requeridas es solo log2 N, que puede ser mucho menor que N a medida que N crece.

Un bucle anidado en el que el bucle interno depende del valor del bucle externo es frecuentemente O (N ^ 2), porque el bucle interno se ejecutará hasta N veces por cada iteración del bucle externo, en el peor de los casos. N * N o N ^ 2.

Por lo tanto, inspeccione el algoritmo en cuestión, busque los bucles y determine el número de iteraciones en el peor de los casos en función del tamaño de los datos de entrada.

More Interesting

¿Existe algún algoritmo de procesamiento de imágenes para mejorar tanto la calidad como la resolución de una imagen usando otras imágenes de la misma área?

¿Cómo funciona el algoritmo en LinguaLift?

¿Qué es un algoritmo para generar todas las combinaciones posibles de un conjunto dado de letras (por ejemplo, 'a', 'b', 'c', 'd', 'e')?

¿Cuál es la mejor manera de aprender el algoritmo KMP para poder recordarlo fácilmente?

Cómo resolver este problema usando la descomposición de raíz cuadrada

Cómo incrementar mis habilidades en programación dinámica

Cómo ordenar y combinar un conjunto de números en función de su aparición en múltiples arreglos de manera óptima

¿Debería concentrarme en dominar algoritmos y estructuras de datos o desarrollar una buena aplicación? ¿Qué es más necesario a largo plazo?

¿Cuál es el mejor algoritmo de extracción de características para comparar dos imágenes?

¿Cuáles son las ventajas de los diferentes algoritmos de clasificación?

¿Qué tipo de algoritmo utiliza Google para clasificar los correos?

¿Podemos tener un árbol binario cuyo recorrido posterior y posterior sea el mismo?

¿Es el algoritmo y la metodología para corregir automáticamente las palabras mal escritas en las consultas de búsqueda de Google una "salsa secreta" o está abierto?

¿Cuál es el mejor y el último algoritmo de última generación para encontrar documentos similares?

Cómo calcular coeficientes binomiales para números muy grandes