Tecnologia da InformaçãoAlgoritmos de ordenação, busca e complexidadeINEP (ENEM) 2019
ENADE
Questão de Tecnologia da Informação
A linguagem Python não permite alguns tipos de otimização como, por exemplo, a recursão em cauda e, devido à sua natureza dinâmica, é impossível realizar esse tipo de otimização em tempo de compilação tal como em linguagens funcionais como Haskell ou ML. Disponível em: <http:/www.python-history.blogspot.com/2009/04/origins-of-pythons-functional-features.html>. Acesso: em 15 jun. 2019 (adaptado). O trecho de código a seguir, escrito em Python, realiza a busca binária de um elemento x em uma lista lst e a função binary_search tem código recursivo em cauda. 1 def binary_search(x, lst, low=None, high=None): 2 if low == None : low = 0 3 if high == None : high = len(lst)-1 4 mid = low + (high - low) // 2 5 if low > high : 6 return None 7 elif lst[mid] == x : 8 return mid 9 elif lst[mid] > x : 10 return binary_search(x, lst, low, mid-1) 11 else : 12 return binary_search(x, lst, mid+1, high) Disponível em: <https://www.kylem.net/programming/tailcall.html>. Acesso em: 15 jun. 2019 (adaptado). Considerando esse trecho de código, avalie as afirmações a seguir. I. Substituindo-se o conteúdo da linha 10 por high = mid - 1 e substituindo-se o conteúdo da linha 12 por low = mid + 1, não se altera o resultado de uma busca. II. Envolvendo-se o código das linhas 4 a 12 em um laço while True, substituindo-se o conteúdo da linha 10 por high = mid - 1 e substituindo-se o conteúdo da linha 12 por low = mid + 1 remove-se a recursão de cauda e o resultado da busca não é alterado. III. Substituindo-se o código da linha 10 por: newhigh = mid-1 return binary_search(x, lst, low, newhigh) e substituindo-se o código da linha 12 por: newlow = mid+1 return binary_search(x, lst, newlow, high) remove-se a recursão de cauda. IV. Substituindo-se o conteúdo das linhas 9 a 12 por if lst[mid] > x : newlow = low newhigh = mid-1 else: newlow = mid+1 newhigh = high return binary_search(x, lst, newlow, newhigh) mantém-se o resultado da busca. É correto o que se afirma em
Mais questões de Algoritmos de ordenação, busca e complexidade
- Selecon 2026Em um sistema embarcado, é necessário ordenar n registros em memória para permitir buscas rápidas. O projeto impõe pouca memória adicional (ordenação in-place) e exige garantia de…
- Fundatec 2026Sobre estruturas de dados, analise a sentença abaixo: Pilhas e filas são estruturas de dados não lineares, organizadas de forma que os elementos não estão dispostos em uma sequênc…
- Fundatec 2026Na recursividade, o que acontece se uma função chama a si mesma sem que uma “condição de parada” (caso base) seja atingida?
- FGV 2026Um Analista precisa escolher a estrutura de dados mais eficiente para implementar uma lista de tarefas críticas que requer inserções e remoções rápidas em qualquer ponto da lista,…
- Fundatec 2026Analise o vetor ordenado: [3, 8, 12, 15, 19, 27, 31]. Aplicando busca binária para localizar o valor 19, quantas comparações serão realizadas até encontrar o elemento, considerand…
Questão de prova oficial, com o gabarito definitivo publicado pela banca. Reproduzida para fins de estudo.

