Bienvenido a la tercera parte de la colección de Algoritmos de Ciencias de la Computación. Una vez más, profundizaremos en la recursión al abordar el tema de las búsquedas binarias.
Una "búsqueda binaria" es un algoritmo de búsqueda que se utiliza en un arreglo que ya está ordenado. Compara el valor objetivo con el elemento central de un arreglo. Si no coinciden, se ignora la mitad en la que el objetivo no puede estar y la búsqueda continúa en la mitad restante, tomando nuevamente el elemento central para compararlo con el valor objetivo y repitiendo este proceso hasta encontrarlo. Si el valor objetivo no está contenido en el arreglo, con el tiempo los índices de búsqueda izquierdo y derecho se cruzarán, y esa condición debe terminar la búsqueda.
Para simplificar, llamaré al arreglo "arr", al índice inicial "left", al índice final "right" y al elemento que buscamos "elem". Inicialmente, los valores de entrada para left y right serán left = 0 y right = sizeOfArray - 1. El resto del algoritmo puede dividirse en cinco pasos:
La función recursiva de este desafío utilizará una búsqueda binaria para encontrar un elemento en un arreglo dado. Si el elemento ingresado se encuentra, la función debe devolver true. Si no logra encontrarlo, debe devolver false.
binarySearch([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], left, right, 7) ➞ True
binarySearch([1, 11, 14, 15, 32, 64, 67, 88, 92, 94], left, right, 12) ➞ False
binarySearch([3, 6, 9, 12, 15, 18, 21, 24, 27, 30], left, right, 27) ➞ True