Deje N ser el número de artículos. Cada iteración (o llamada recursiva) reduce la cantidad de elementos a la mitad.
Suponga que N es una potencia de 2. Ie [matemáticas] N = 2 ^ k [/ matemáticas] para algún número natural k. [matemática] N = 2 ^ k [/ matemática] ==> [matemática] lg N = k [/ matemática] (lg es log base 2).
Después de 1 iteración, [matemática] N = 2 ^ (k-1) [/ matemática], después de 2 iteraciones [matemática] N = 2 ^ (k-2), [/ matemática] …, después de k iteraciones, [matemática] N = 2 ^ (kk) = 2 ^ 0 = 1. [/ math] Por lo tanto, en el peor de los casos, hacemos [math] k = lg N, [/ math] iteraciones donde cada iteración está limitada por una constante. Entonces, la complejidad es O (log N) (la base del log no importa en notación asintótica).
- ¿Qué tan difícil es el algoritmo de verificación de traducción de Duolingo? ¿Existen otras herramientas de código abierto similares por ahí?
- ¿Encontrar el número máximo de reinas que puedes colocar en un tablero de ajedrez modificado con paredes negras? Por favor, discuta el enfoque del algoritmo, la implementación y la complejidad en detalles.
- ¿Cuáles son los algoritmos y las estructuras de datos que tengo que aprender para competir en Google Code Jam?
- ¿Cómo estudiar efectivamente estructuras de datos y algoritmos? ¿Simplemente memorizo cómo funcionan
- ¿Por qué obtengo el índice de cadenas fuera de rango?
Si N no es una potencia exacta de 2, entonces se encuentra entre dos potencias consecutivas de 2. Entonces, en términos más generales, [matemática] 2 ^ (k-1) <= N <2 ^ k [/ matemática] para algún número natural k . Repitiendo el argumento en el párrafo anterior, en el peor de los casos hacemos [matemáticas] lg N <k [/ matemáticas] iteraciones de tiempo constante. Entonces la complejidad es O (log n).