Questões de Concurso
Comentadas sobre algoritmos em algoritmos e estrutura de dados
Foram encontradas 1.554 questões
I - A + A = 1
II - (A + B).(A + B’) = A
III - A.A’ = 0 IV - A.(A + B) = A
Estão corretas:
Tal estratégia denomina-se
I. Quicksort divide um conjunto de itens em conjuntos menores, que são ordenados de forma independe, e depois os resultados são combinados para produzir a solução de ordenação do conjunto maior.
II. Seleção é um método que consiste em selecionar o menor item de um vetor e substituí-lo pelo item que estiver na primeira posição. Essas duas operações são repetidas com os itens restantes até o último elemento.
III. Shellsort é uma extensão do algoritmo de ordenação por Inserção, contornando o problema que ocorre quando o menor item de um vetor está na posição mais à direita.
Assinale a alternativa CORRETA:
• Todas as páginas são mantidas em uma lista circular, e um ponteiro (H) referencia a página mais antiga.
• Quando uma falta de página ocorre, a página apontada por H é inspecionada:
• Caso o seu bit de referência seja igual a 0, a página é retirada da lista e uma nova é inserida no seu lugar. O ponteiro H passa a apontar para a próxima página da lista.
• Caso o seu bit de referência seja igual a 1, ele será zerado, e H passará a apontar para a próxima página da lista.
• O processo é repetido até que uma página onde R=0 seja encontrada.
Qual é o nome desse algoritmo de substituição de página?
p1 : Eu passo no concurso ou continuarei estudando.
p2 : Se eu passar no concurso, comprarei um carro.
p3 : Se eu continuar estudando, comprarei mais livros.
A conclusão que se pode inferir a partir da regra do silogismo disjuntivo aplicado nas premissas acima é:
Qual é o número máximo de iterações necessárias para encontrar um elemento qualquer do vetor caso seja utilizado o algoritmo de busca binária?
algoritmo prog;
var
array[1..8] of inteiros : tab;
lógica : achou;
inteiro : D, m, ini, fim, centro;
procedimento PROC11;
início
para m de 1 até 8 faça ler(tab[m]);
fim_do_procedimento;
procedimento PROC22;
início
ler(D);
achou=false;
ini = 1;fim = 8;centro = (ini+fim) / 2;
enquanto (D < > tab[centro]) e (ini < > fim) faça
início
se D > tab[centro] então ini = centro+1
senão fim = centro;
centro = (ini + fim) / 2;
fim_do_procedimento;
se D = tab[centro] então achou = VERDADEIRO
senão achou = FALSO;
se achou então escreva(D,' encontra-se na posição ',centro)
senão escreva(D,' não se encontra na tabela...');
fim_do_procedimento;
início
PROC11;
PROC22;
fim_do_algoritmo.
int bits = 0;
while (x != 0) { bits++; x=x/2; }
return bits;
}
I. Se o número de passos realizados por um algoritmo A é (n2 + n) para várias entradas de tamanho n, então a complexidade de A é O(n2 ).
II. Se a complexidade de pior caso de um algoritmo A for n, então o número de passos efetuados por A é O(n), qualquer que seja a entrada.
III. Se a complexidade de pior caso de um algoritmo A for n, então podemos afirmar que A é O(n) e também O(n2 ), mas a afirmação O(n) é mais precisa e deve ser utilizada.
Assinale a alternativa CORRETA.
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
f(x)
x ← x + 1
devolva x
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
Considere agora o seguinte trecho de código que invoca a função f definida acima.
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
a ← 0
escreva a
escreva f(a)
escreva a
´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´´
A execução do trecho de código acima resultaria na escrita de
proc insertionSort(int[] arr)
int tamanho <- tam(arr);
int i, j, aux;
para i de 1 incr 1 até tamanho-1 faça
aux <- arr[i];
para j de i-1 incr -1 até (j >= 0 e aux < arr[j]) faça
arr[j+1] <- arr[j];
arr[j+1] <- aux;
Procedimento XYZ( TABELA, NUMERO DE CODIGOS, CEP);
tipo tabela de conversão = vetor[1: NUMERO DE CODIGOS] conversão;
tipo de conversão = registro inteiro: CA, CN fim registro;
tabela de conversão: TABELA;
inteiro: NUMERODECODIGOS, CEP;
inicio
inteiro comeco, meio, fim;
COMECO <- 1; FIM <- NUMERODECODIGOS;
repita
MEIO ,<-( COMECO + FIM) /2
se CEP <TABELA[MEIO].CA;
então FIM <- MEIO -1;
senão
se CEP>TABELA[MEIO].CA;
então
CEP <- TABELA[MEIO] +1;
senão
Imprima( " Falta CEP", NUMERO);
fim se;
abandone;
fim se;
fim se;
até COMECO> FIM;
fim(XYZ)
O algoritmo mostrado a seguir resume corretamente a inserção com um leque de, no máximo, sete elementos.
Type leque = record
topo: integer;
memo: array [1..7] of char;
end;
var L:leque;
p.topo: = 0
procedure push (var L:leque; x:char);
begin
if not L.topo>7 then
begin
L.topo :=L.topo+1;
L.memo [L.topo]:= x;
end;
end;
A função mostrada abaixo é um exemplo de algoritmo recursivo.
Function fat (x:integer) : integer;
begin
if x=0 then cfat := 1
else fat := x * cfat (n-1);
end;