FC ConcursosFC Concursos

Questão FC373405

Um Auditor Fiscal da área de Tecnologia da Informação possui um conjunto de valores numéricos, em ordem crescente, e deseja localizar o valor 66, mostrando a respectiva posição des

Desenvolvimento Web

FCC · 2019

Um Auditor Fiscal da área de Tecnologia da Informação possui um conjunto de valores numéricos, em ordem crescente, e deseja localizar o valor 66, mostrando a respectiva posição deste valor no conjunto. Sabendo que a posição dos valores começa em 0, criou o algoritmo abaixo, em JavaScript.

 

<script>

var v = [1, 2, 12, 46, 66, 78, 90];

var n=v.length;

var x=66;

var e = -1;

var d = n;

while (e < d-1) {

var m = (e + d)/2;

...I;

else var d = m;

}

document.writeln(d);

</script>

 

Para o auditor conseguir o que deseja, a lacuna I deve ser corretamente preenchida com o comando

  1. if (v[m] > x) var e = m
  2. if (v[d] >= x) var e = m
  3. if (v[m] <= x) var e = m
  4. if (v[d] < x) var e = m
  5. if (v[m] < x) var e = m
Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

O comando if (v[m] < x) var e = m implementa corretamente a etapa essencial da busca binária. Com o vetor ordenado e índices iniciando em 0, a variável m é a divisão do intervalo, calculada como \(m=(e+d)/2\).

Quando v[m] < x, sabemos que todos os elementos até a posição m são menores que o alvo; portanto atualizamos o limite inferior movendo e para m (isto é, var e = m), descartando a metade inferior da busca e preservando a metade superior.

O laço continua até que os limites fiquem adjacentes (condição e < d-1), de modo que ao final d aponta para a posição do primeiro elemento ≥ x. Como o vetor contém 66, document.writeln(d) imprimirá a posição correta de 66.

Conteúdo do catálogo FC Concursos · Atualizado em

Continue aprendendo