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):
- Cálculo do meio (
mid):
mid = \frac{low + high}{2} = \frac{0 + 7}{2} = 3 (Divisão inteira) - 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$).
- 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ção | Intervalo | Status |
|---|
| a | a[0]...a[7] | Incorreto (Intervalo inicial) |
| b | a[5]...a[6] | Incorreto |
| c | a[4]...a[7] | Correto |
| d | a[2]...a[6] | Incorreto |
| e | a[6]...a[7] | Incorreto |