Pular para o conteúdo

Serviço de Seleção do Pessoal da Marinha (SSPM) · Marinha do Brasil 2022

Questão 18 — Algoritmos e Estruturas de Dados: Busca Binária Recursiva (Python)

Algoritmos e Estruturas de Dados Busca Binária Recursiva (Python)

Serviço de Seleção do Pessoal da Marinha (SSPM) 2022

Marinha do Brasil · Quadro Técnico do Corpo Auxiliar da Marinha (CP-T) — Informática · Caderno Amarela

Gabarito disponível

Considere o código de busca binária abaixo, escrito em linguagem Python.

def busca_binaria(arr, low, high, x):
print("OK")
if high >= low:

mid = (high + low) // 2
if arr[mid] == x:
return mid

elif arr[mid] > x:
return busca_binaria(arr, low, mid - 1, x)
else:
return busca_binaria(arr, mid + 1, high, x)

else:
return -1

arr = [5, 10, 30, 50, 70, 100, 120, 800]
resultado = busca_binaria(arr, 0, len(arr) - 1, 30)

Assim, a quantidade de vezes em que o string "OK" será impresso é igual a:
Selecione uma alternativa

Resolução comentada

A busca binária por 30 faz 3 chamadas, então imprime 'OK' 3 vezes.

Chamada 1: low=0, high=7, mid=3 (50 > 30), logo high=2. Chamada 2: mid=1 (10 < 30), logo low=2. Chamada 3: mid=2 (30), que é o valor procurado, e a função retorna. Como 'OK' é impresso a cada chamada, são 3 vezes.

Análise das alternativas

A) 2 desconsidera a chamada em que o valor é encontrado. C, D e E) Contariam chamadas adicionais que não ocorrem, pois a busca termina ao achar o elemento.

Referência: Algoritmo de busca binária recursiva em Python.

Resolução comentada do VaiConcursos.

Ver gabarito

Gabarito: B

Fonte: Gabarito preliminar: Gabarito final (após recursos) — página 6