Matemática Múltipla Escolha

Considere o seguinte método binSearch() dessa classe: Na primeira passagem pelo elemento 27, o intervalo de pesquisa depois da primeira passagem pelo ciclo while, será

Considere o seguinte método binSearch() dessa classe:

template<int size>
int SomeClass::binSearch(int key)
{
  int low = 0;
  int high = length - 1;
  while (low <= high)
  {
    int mid = (low + high) / 2;
    if (a[mid] == key)
      return mid;
    else if (a[mid] < key)
      low = mid + 1;
    else
      high = mid - 1;
  }
  return -1;

Na primeira passagem pelo elemento 27, o intervalo de pesquisa depois da primeira passagem pelo ciclo while, será

  1. a[0]...a[7]
  2. a[5]...a[6]
  3. a[4]...a[7]
  4. a[2]...a[6]
  5. a[6]...a[7]

Resolução completa

Explicação passo a passo

C
Alternativa C

Alternativa C - a[4]...a[7]

Análise Detalhada

Para resolver esta questão, precisamos simular o funcionamento do algoritmo de Busca Binária apresentado no código, aplicando-o aos dados fornecidos na imagem.

1. Entendendo os Dados Iniciais

  • Array (a): Contém os valores [4, 7, 9, 11, 20, 24, 30, 41].
  • Índices: Em C++, os índices começam em 0.
  • a[0]=4, a[1]=7, a[2]=9, a[3]=11, a[4]=20, a[5]=24, a[6]=30, a[7]=41.
  • Tamanho (length): Como há 8 elementos visíveis e ordenados, assumimos que length = 8.
  • Chave (key): O elemento que estamos procurando é 27.

2. Execução do Algoritmo (Primeira Passada)

O código inicia as variáveis de controle do intervalo assim:

int low = 0;           // Limite inferior
int high = length - 1; // Limite superior (8 - 1 = 7)

No início, o intervalo de pesquisa é todo o array: índices de 0 a 7.

Dentro do loop while (low <= high):

  1. Cálculo do meio (mid):
    mid = \frac{low + high}{2} = \frac{0 + 7}{2} = 3 (Divisão inteira)
  2. Comparação:
    Verificamos o valor no índice 3:
    a[3] = 11

A comparação é feita contra a chave 27:

  • a[3] == 27? Não ($11 \neq 27$).
  • a[3] < 27? Sim ($11 < 27$).
  1. Atualização do Intervalo:
    Como o valor encontrado no meio (11) é menor que o valor buscado (27), sabemos que o valor procurado deve estar na metade direita do array atual.

O código executa:

    low = mid + 1; // low passa a ser 3 + 1 = 4

A variável high não muda, permanecendo em 7.

3. Resultado Final

Após a primeira passagem, as variáveis de controle definem o novo intervalo de busca:

  • Novo low = 4
  • Novo high = 7

Isso significa que a próxima verificação ocorrerá apenas nos índices entre 4 e 7. Em notação do array, esse intervalo é representado por:
a[4]...a[7]

OpçãoIntervaloStatus
aa[0]...a[7]Incorreto (Intervalo inicial)
ba[5]...a[6]Incorreto
ca[4]...a[7]Correto
da[2]...a[6]Incorreto
ea[6]...a[7]Incorreto

Tem outra questão para resolver?

Resolver agora com IA

Mais questões de Matemática

Ver mais Matemática resolvidas

Tem outra questão de Matemática?

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