Aquí hay otra forma de decirlo.
Supongamos que su algoritmo es lineal en la cantidad de dígitos del tamaño del problema. Entonces, quizás tengas un nuevo algoritmo para factorizar un número grande, que puedas mostrar como lineal en el número de dígitos. Un número de 20 dígitos por lo tanto, toma el doble de tiempo para factorizar como un número de 10 dígitos utilizando su algoritmo. Esto tendría complejidad de registro. (Y valdría la pena algo para el inventor.)
Bisección tiene el mismo comportamiento. Se necesitan aproximadamente 10 pasos de bisección para cortar la longitud del intervalo en un factor de 1024 = 2^10, pero solo 20 pasos reducirán el intervalo en un factor de 2^20.
La complejidad del registro no siempre significa que un algoritmo sea rápido en todos los problemas. El factor lineal en frente del O (log (n)) puede ser grande. Por lo tanto, su algoritmo puede ser terrible en problemas pequeños, y no se vuelve útil hasta que el tamaño del problema sea apreciablemente grande para que otros algoritmos mueran una muerte exponencial (o polinómica).
+1 muy interesante. Estoy buscando algo como tus ejemplos más. Es el algoritmo logartihmic como: for (int i = BIG_number; i> N; i * = 1/2) {...} –
1/2 es cero en la división de enteros, pero si usa "i/= 2" en su lugar , sí lo es. (Si ese es el algoritmo particular que se está preguntando, podría haber sido una buena idea incluirlo en su pregunta). –