Questão FC373254
Considere o programa Java abaixo. public class Verificar { public static int dados(int[ ] vetor, int início, int fim, int chave) { If (início > fim) { } return -1; int meio = (inic
Linguagens de Programação
FCC · 2024
Considere o programa Java abaixo.
public class Verificar {
public static int dados(int[ ] vetor, int início, int fim, int chave) {
If (início > fim) {
} return -1;
int meio = (inicio + fim) / 2;
if (vetor [meio] == chave {
return meio;
}
if (vetror[ínício] <= vetor (meio)) {
if (chave >= vetor[ínicio] 44 chave < vetor[meio)) «
return dados (vetor, início, meio - 1, chave);
} else }
return dados (vetor, meio + 1, fim, chave);
}
} else {
if (chave > vetcr[meio)] && chave <= vetor [fim]) {
return dados (vetor, meio + 1, fim, chave);
{ else {
return dados (vetor, inicio + meio - 1, chave);
}
}
}
public static void main(String[ ] args) {
int[ ] vetor = (7, 8, 9, 1,2, 3, 4, 5, 6};
int resultado = dados(vetor, 0, 8, 5);
System.cut.printin(resultado);
}
}
Ao executar o programa, em condições ideais, será exibido na tela o valor
- 7
- 6
- 8
- 3
- 5
Mostrar resposta e comentário
Gabarito
A
Comentário do professor
O método implementa uma busca binária em vetor rotacionado. Começa com início=0 e fim=8; calcula o meio por \(meio = (início + fim)/2\).
No primeiro passo \(meio = 4\) e vetor[4] = 2. Como vetor[0] = 7 não é ≤ vetor[4], a metade direita (índices 5–8: 3,4,5,6) está ordenada. A chave 5 pertence a esse intervalo, então a busca continua em início=5, fim=8.
No segundo passo \(meio = 6\) e vetor[6] = 4. Aqui a metade esquerda (índices 5–6: 3,4) está ordenada, mas 5 não está nesse intervalo, portanto a busca avança para início=7, fim=8.
Finalmente \(meio = 7\) e vetor[7] = 5, igual à chave; o método retorna o índice 7, que é o valor exibido.
Conteúdo do catálogo FC Concursos · Atualizado em