Questão nº 68
Questão de Tecnologia da Informação · CESGRANRIO Transpetro PSP-RH-2018.1 (nº 68)
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?
- A8
- B9
- C10 (alternativa correta)
- D11
- E12
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 é dado por ou, na prática, . Para , temos , então o teto é 10 iterações. A "pegadinha" clássica é confundir 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 (), muito menor que 750.
- (B) Incorreta: 9 é a armadilha da banca: , mas o algoritmo não faz iterações fracionárias — ele precisa de 10 iterações completas para cobrir todos os casos, pois .
- (C) Correta: Com 750 elementos, o pior caso exige iterações, pois não é suficiente para distinguir todos os 750 índices possíveis, e 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.