Questão para a Prova Oral 068

Semana: 17/03/2003 a 21/03/2003
Assunto: Ordenação em Tempo Linear e Medianas e Estatisticas de Ordem


Considere o seguinte algoritmo para selecionar o i-ésimo elemento do vetor (considerando do menor elemento para o maior):

Select-iEsimo(A, p, r, i)
  Max = p;
  Min = p;
  for j=p to r do
    if A[Min] > A[j] then
      Min = j
    else if A[Max] < A[j] then
      Max = j
  if (r < p+1) or (i = 1) then
    return A[Min]
  else
    troca A[Min] <-> A[r]
    troca A[Max] <-> A[r-1]
    return Select-iEsimo(A, p, r-2, i-1)

Sobre o algoritmo acima, é correto afirmar que:

A) O algoritmo sempre funciona e leva O(n).
B) O algoritmo sempre funciona e leva O(in).
C) O algoritmo não funciona para todos os casos.
D) O algoritmo não funciona para nenhum caso.
E) n.d.a.

Autor: Nielsen Cassiano Simões
RA: 941614