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
- if (v[m] > x) var e = m
- if (v[d] >= x) var e = m
- if (v[m] <= x) var e = m
- if (v[d] < x) var e = m
- 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