Aquí hay código recursivo para búsqueda binaria.
BinarySearch (A, inicio, fin, objetivo)
si inicio> fin entonces
volver NO ENCONTRADO
mid = floor ((inicio + final) / 2)
si A [medio] = objetivo entonces
volver a mediados
de lo contrario si el objetivo <A [medio] entonces // mira a la izquierda
return BinarySearch (A, inicio, mediados de 1, objetivo)
más // mira bien
return BinarySearch (A, mid + 1, end, target)
Podemos escribir una recurrencia para este algoritmo:
- ¿Cómo puede alguien con un doctorado en física trabajar en el desarrollo de algoritmos?
- ¿Qué significa si un futuro programador apesta u odia los algoritmos de aprendizaje y las estructuras de datos?
- ¿Qué es el mapa de bits? ¿Dónde lo usamos?
- ¿Qué es un contador Loglog?
- ¿Cuáles son algunos algoritmos básicos en el aprendizaje automático para que su programa aprenda de otros datos (aprendizaje supervisado)?
Deje que [math] T (n) [/ math] represente el tiempo de ejecución de la búsqueda binaria. Entonces podemos escribir [matemáticas] T (n) = T (\ frac {n} {2}) + \ Theta (1) [/ matemáticas]
Donde [matemáticas] n = final-inicio + 1. [/matemáticas]
Hay algo llamado el teorema maestro que dice: (más o menos)
Si tiene una recurrencia que se parece a
[matemáticas] T (n) = a T (\ frac {n} {b}) + f (n) [/ matemáticas]
Entonces lo que haces es comparar [matemáticas] f (n) [/ matemáticas] y [matemáticas] n ^ {log_b (a)}. [/ Matemáticas]
Si [math] f (n) [/ math] es polinomialmente más grande que [math] n ^ {log_b (a)} [/ math], entonces el tiempo de ejecución es [math] \ Theta (f (n)) [/ math ]
Si es lo contrario, entonces el tiempo de ejecución es [math] \ Theta (n ^ {log_b (a)}) [/ math].
Si las funciones son iguales (en notación [matemática] \ Theta [/ matemática]), el tiempo de ejecución es [matemática] \ Theta (f (n) \ log n). [/matemáticas]
En la búsqueda binaria [matemática] f (n) = 1 [/ matemática], [matemática] a = 1 [/ matemática] y [matemática] b = 2 [/ matemática]. [matemática] \ log_b (a) = \ log_2 1 = 0. [/ matemática] Entonces [matemática] n ^ 0 = f (n). [/matemáticas]
Entonces el tiempo de ejecución es [matemática] \ Theta (\ log n). [/matemáticas]