Bem-vindo à terceira parte da coleção de Algoritmos de Ciência da Computação. Mais uma vez, vamos nos aprofundar em recursão ao abordar o tema de buscas binárias.
Uma "busca binária" é um algoritmo de busca usado em um array que já está ordenado. Ele compara o valor-alvo com o elemento do meio de um array. Se eles não forem iguais, a metade na qual o alvo não pode estar é ignorada e a busca continua na metade restante, novamente usando o elemento do meio para compará-lo com o valor-alvo e repetindo esse processo até que o valor-alvo seja encontrado. Se o valor-alvo não estiver contido no array, eventualmente os índices de busca esquerdo e direito se cruzarão, e essa condição deverá encerrar a busca.
Para simplificar, vou me referir ao array como "arr", ao índice inicial como "left", ao índice final como "right" e ao elemento que estamos procurando como "elem". Inicialmente, as entradas para left e right serão left = 0 e right = sizeOfArray - 1. O restante do algoritmo pode ser dividido em cinco etapas:
A função recursiva deste desafio usará uma busca binária para encontrar um elemento em um array fornecido. Se o elemento inserido for encontrado, a função deverá retornar true. Se não conseguir encontrar o elemento, deverá retornar 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