Geral Múltipla Escolha

Considere a seguinte classe SomeClass: Considera uma pesquisa binária por uma chave numa array a[0..a.length-1] está ordenada por ordem ascendente. Se a condição testada no ciclo while for alterada para while (low < high), qual dos valores seguintes não será encontrado?

Considere a seguinte classe SomeClass:

class SomeClass {
  public:
    int binSearch(int key);
  private:
    int length;
    int a[size];
};

Considera uma pesquisa binária por uma chave numa array a[0..a.length-1] está ordenada por ordem ascendente.

Se a condição testada no ciclo while for alterada para while (low < high),
qual dos valores seguintes não será encontrado?

  1. 4
  2. 7
  3. 9
  4. 11
  5. 20

Resolução completa

Explicação passo a passo

Resumo da resposta

Alternativa [Não especificada - Lista de Valores]

Os valores que não serão encontrados são: 4, 9, 20 e 41.

Análise Detalhada

1. O Problema da Condição while

A diferença crucial está na condição de parada do laço while:

  • Original: while (low <= high) → Continua enquanto houver pelo menos um elemento a verificar (incluindo quando low == high).
  • Modificada: while (low < high) → Para assim que low encontra high, deixando de verificar o elemento restante.

Quando low == high, sobra exatamente um índice para verificar. Se o algoritmo parar aqui, ele ignora esse último candidato.

2. Rastreio da Execução

Vamos simular a busca para entender por que alguns valores falham.
Lista: [4, 7, 9, 11, 20, 24, 30, 41] (Índices 0 a 7)

Valor AlvoPassos IniciaisEstado Final (low vs high)Resultado com low < high
4 (Idx 0)high desce até 0low=0, high=0FALHA (Ignorado)
7 (Idx 1)Encontrado em mid=1N/A (Encontrado cedo)OK
9 (Idx 2)high desce até 2low=2, high=2FALHA (Ignorado)
11 (Idx 3)Encontrado em mid=3N/A (Encontrado cedo)OK
20 (Idx 4)high desce até 4low=4, high=4FALHA (Ignorado)
24 (Idx 5)Encontrado em mid=5N/A (Encontrado cedo)OK
30 (Idx 6)Encontrado em mid=6N/A (Encontrado cedo)OK
41 (Idx 7)low sobe até 7low=7, high=7FALHA (Ignorado)

Conclusão

Os valores 4, 9, 20 e 41 correspondem às posições onde a busca termina com low == high. Como a condição alterada impede a entrada no laço nessa situação, esses elementos nunca são comparados com a chave, resultando em retorno -1 (não encontrado).

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Geral

Ver mais Geral resolvidas

Tem outra questão de Geral?

Cole o enunciado, tire uma foto ou descreva o problema — a IA resolve com explicação completa em segundos.