Questão nº 59
Questão de Desenvolvimento de Sistemas · FCC TRT24 2016 (nº 59)
FCC2016Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da InformaçãoDesenvolvimento de Sistemas
Gabarito: Cver comentário ↓
Considere a classe Java a seguir:
public class Prova {
public static void main(String[] args) {
int indice, tam, indice1, min, aux;
int v[] = {7, 12, 33, 88, 400, 1000, 1010, 2000, 2050, 9000};
int x = busca(1001, 10, v);
System.out.print (x);
}
public static int busca(int x, int n, int v[]) {
return auxiliaBusca(x, 0, n - 1, v);
}
public static int auxiliaBusca(int x, int e, int d, int v[]) {
if (e > d) {
return -1;
} else {
int m = (e + d) / 2;
if (v[m] == x) {
return m;
}
if (v[m] < x) {
return auxiliaBusca(x, m + 1, d, v);
} else {
return auxiliaBusca(x, e, m - 1, v);
}
}
}
}
Ao executar essa classe
- Aocorrerá uma exceção do tipo `ArrayIndexOutOfBoundsException`.
- Bserá exibido o valor 6.
- Cserá exibido o valor -1. (alternativa correta)
- Dserá realizada uma pesquisa sequencial no vetor.
- Eos elementos do vetor serão colocados em ordem decrescente.
Resposta comentada
Gabarito Alternativa C
A busca binária recursiva é um algoritmo para encontrar um item em um vetor ordenado. Ele funciona dividindo o vetor ao meio repetidamente, comparando o valor procurado com o elemento central e descartando a metade onde o valor não pode estar, até encontrar o elemento ou esgotar o espaço de busca.
- (A) Incorreta: Não ocorrerá uma exceção
ArrayIndexOutOfBoundsException. Os índicese,demsão sempre calculados dentro dos limites válidos do vetor (0 a 9) enquanto o intervalo de busca for válido (e <= d). Quandoe > d, a função retorna-1sem tentar acessar um índice inválido. - (B) Incorreta: O valor 6 é o índice do elemento
1010no vetor. O valor buscado é1001, que não está presente no vetor. - (C) Correta: O algoritmo de busca binária recursiva é executado para encontrar o valor
1001no vetorv. Como1001não está presente no vetor, a funçãoauxiliaBuscaeventualmente atinge a condição de paradae > d(onde o limite inferioreultrapassa o limite superiord), indicando que o elemento não foi encontrado, e retorna-1. - (D) Incorreta: O código implementa claramente uma busca binária, que divide o espaço de busca pela metade a cada passo, e não uma pesquisa sequencial que percorreria o vetor elemento por elemento.
- (E) Incorreta: O código fornecido é um algoritmo de busca; ele apenas lê os elementos do vetor para encontrar um valor, mas não realiza nenhuma modificação ou ordenação dos elementos do vetor.
Fonte: FCC TRT24 2016 Técnico Judiciário - Área Apoio Especializado - Especialidade Tecnologia da Informação (Caderno Tipo 1). Reproduzida para fins de estudo.