Questão nº 68

Questão de Tecnologia da Informação · CESGRANRIO Transpetro PSP-RH-2018.1 (nº 68)

CESGRANRIO2018Analista de Sistemas Júnior - InfraestruturaTecnologia da Informação
Gabarito: Cver comentário ↓

Um método que implementa um algoritmo de busca binária recebe como parâmetros um vetor de inteiros ordenados descendentemente, o comprimento desse vetor e um número inteiro que se deseja localizar no vetor. O cabeçalho desse método é o seguinte:

`public int buscaBin(int vet[], int n, int val)`

Admitindo-se que o vetor passado como parâmetro tenha 750 elementos, qual será o número máximo de iterações que o algoritmo irá realizar até que o valor (val) seja localizado ou que seja detectado que esse valor não se encontra no vetor?

Resposta comentada

Gabarito Alternativa C

A busca binária funciona dividindo o espaço de busca pela metade a cada iteração. O número máximo de iterações para encontrar um elemento (ou concluir que ele não existe) em um vetor de tamanho nn é dado por log2(n+1)\lceil \log_2(n+1) \rceil ou, na prática, log2(n)+1\lfloor \log_2(n) \rfloor + 1. Para n=750n = 750, temos log2(750)9,55\log_2(750) \approx 9,55, então o teto é 10 iterações. A "pegadinha" clássica é confundir log2(750)9,55\log_2(750) \approx 9,55 com 9 (arredondando para baixo), mas como o algoritmo precisa de uma iteração extra para verificar o último elemento ou a condição de término, o máximo é 10.

  • (A) Incorreta: 8 seria o máximo para um vetor de até 255 elementos (2812^8 - 1), muito menor que 750.
  • (B) Incorreta: 9 é a armadilha da banca: log2(750)9,55\log_2(750) \approx 9,55, mas o algoritmo não faz iterações fracionárias — ele precisa de 10 iterações completas para cobrir todos os casos, pois 29=512<7501024=2102^9 = 512 < 750 \le 1024 = 2^{10}.
  • (C) Correta: Com 750 elementos, o pior caso exige log2(750+1)=log2(751)=10\lceil \log_2(750+1) \rceil = \lceil \log_2(751) \rceil = 10 iterações, pois 29=5122^9 = 512 não é suficiente para distinguir todos os 750 índices possíveis, e 210=10242^{10} = 1024 cobre.
  • (D) Incorreta: 11 seria necessário apenas para vetores com mais de 1024 elementos (até 2047), o que não é o caso.
  • (E) Incorreta: 12 seria para vetores entre 2048 e 4095 elementos, muito além dos 750 do enunciado.

Fonte: CESGRANRIO Transpetro PSP-RH-2018.1 Analista de Sistemas Júnior - Infraestrutura. 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