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

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 índices e, d e m são sempre calculados dentro dos limites válidos do vetor (0 a 9) enquanto o intervalo de busca for válido (e <= d). Quando e > d, a função retorna -1 sem tentar acessar um índice inválido.
  • (B) Incorreta: O valor 6 é o índice do elemento 1010 no 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 1001 no vetor v. Como 1001 não está presente no vetor, a função auxiliaBusca eventualmente atinge a condição de parada e > d (onde o limite inferior e ultrapassa o limite superior d), 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.

Continue estudando

Estudar é izi

Pratique milhares de questões como esta, de graça, com explicação e gamificação no Quizinho.

Estudar de graça no Quizinho