Pular para o conteúdo principal

Questão de Algoritmos e Estrutura de Dados — Algoritmos — SUGEP - UFRPE 2018

Algoritmos e Estrutura de DadosAlgoritmos
Código
qq400623
Banca
SUGEP - UFRPE
Órgão
UFRPE
Ano
2018
Nível
Médio
Cargo
SUGEP - - Técnico de Tecnologia da Informação - Sistemas
Suponha que ‘vec’ é um array ordenado de 1000 chaves inteiras. Quantas comparações no máximo são necessárias para verificar se um inteiro qualquer ‘r’ pertence a ‘vec’?
  1. A10
  2. B50
  3. C500
  4. D1000
  5. E100
Revelar gabarito e comentário

GabaritoA — 10

Comentário gerado por IA. É um apoio ao estudo, ancorado em fontes, mas pode conter imprecisões — confira sempre na fonte oficial (lei, súmula, edital e gabarito da banca). Encontrou um erro? Use “Reportar”.

Busca binária em array ordenado

Gabarito: letra A. Em um array ordenado, o algoritmo mais eficiente para buscar um elemento é a busca binária, que no pior caso realiza um número de comparações igual ao teto do logaritmo de base 2 do tamanho do array. Para 1000 elementos, ( \lceil \log_2 1000 \rceil = 10 ) comparações.

A busca binária funciona dividindo repetidamente o intervalo de busca pela metade. A cada comparação, descarta-se metade dos elementos restantes. Assim, o número máximo de comparações é o menor inteiro ( k ) tal que ( 2^k \geq n ). Para ( n = 1000 ), ( 2^9 = 512 < 1000 ) e ( 2^{10} = 1024 \geq 1000 ), logo ( k = 10 ).

  1. 1Array ordenado de n elementos
  2. 2Dividir intervalo ao meio
  3. 3Comparar elemento do meio
  4. 4Descartar metade restante
  5. 5Repetir até encontrar ou esgotar
  6. 6Máx. comparações = ⌈log₂ n⌉
LEVEL · soulevel.com.br

Alternativa A — ✅ Correta ⟵ GABARITO

Corresponde exatamente a ( \lceil \log_2 1000 \rceil = 10 ). É a resposta correta.

Alternativa B — ❌ Incorreta

50 comparações não correspondem a nenhum algoritmo de busca eficiente para esse tamanho. Seria o necessário para uma busca linear em um array não ordenado de tamanho 50, mas aqui temos 1000 elementos ordenados.

Alternativa C — ❌ Incorreta

500 comparações seriam típicas de uma busca linear no pior caso (metade do array), mas o array está ordenado, permitindo busca binária muito mais eficiente.

Alternativa D — ❌ Incorreta

1000 comparações é o pior caso da busca linear (percorrer todos os elementos). Para um array ordenado, a busca binária reduz drasticamente esse número.

Alternativa E — ❌ Incorreta

100 comparações seria um número intermediário, mas ainda muito acima do logaritmo. Não corresponde a nenhum algoritmo ótimo para busca em array ordenado.

PEGA ESSA DICA!

Sempre que um array estiver ordenado, prefira a busca binária. Calcule o número máximo de comparações como ( \lceil \log_2 n \rceil ). Essa é uma questão clássica de concursos.

Gabarito: letra A.

Link permanente: /questoes/qq400623