FC ConcursosFC Concursos

Questão FC373172

Considere a função abaixo na forma de pseudocódigo. função teste (x,n,p[0..7]: inteiro): inteiro var y, j, d: inteiro y ← 0 d ← n - 1 enquanto (y <= d) faça j ← (y + d) / 2 se (p[j

Algoritmos e Lógica de Programação

FCC · 2018

Considere a função abaixo na forma de pseudocódigo.


função teste (x,n,p[0..7]: inteiro): inteiro
  var y, j, d: inteiro
  y ← 0
  d ← n - 1
  enquanto (y <= d) faça
    j ← (y + d) / 2
   se (p[j] = x) então
      retorne j
   fim_se
   se (p[j] < x)
     então y ← j + 1
     senão d ← j - 1
   fim_se
 fim_enquanto
 retorne -1
fim_função


Se a função teste receber o valor 9 para x, 8 para n e o vetor [7, 10, 42, 88, 100, 123, 401, 502] para p, o retorno da função será

  1. 3
  2. 6
  3. 8
  4. 2
  5. −1
Mostrar resposta e comentário

Gabarito

Errado

Comentário do professor

O procedimento implementa uma busca binária no vetor ordenado. Inicialmente temos y = 0 e d = \(n-1 = 7\).

1ª iteração: \(j=(y+d)/2=(0+7)/2=3\). Como p[j]=88 ≠ 9 e 88 > 9, atualiza-se d=j−1=2.

2ª iteração: \(j=(0+2)/2=1\). p[j]=10 ≠ 9 e 10 > 9, então d=0.

3ª iteração: \(j=(0+0)/2=0\). p[j]=7 ≠ 9 e 7 < 9, então y=j+1=1.

Agora y=1 e d=0, logo a condição y ≤ d é falsa e o laço termina. Como o elemento 9 não foi encontrado, a função retorna -1.

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

Continue aprendendo