Baixe o app para aproveitar ainda mais
Prévia do material em texto
Meus Simulados Teste seu conhecimento acumulado Disc.: ESTRUTURA DE DADOS Aluno(a): THIAGO ALVES SILVESTRINI 202301034779 Acertos: 9,0 de 10,0 13/09/2023 Acerto: 1,0 / 1,0 Em Python é possível implementar um array utilizando o tipo padrão list. Essa implementação permite o uso das seguintes funções para inserir e remover um elemento, respectivamente: insert, remove/destroy. append, remove/pop. insert, delete/pop. impose, remove/destroy. append, pop/delete. Respondido em 13/09/2023 16:18:09 Explicação: Em Python a função append insere um elemento ao �nal da lista. As funções "remove" e "pop" podem remover um elemento, de maneiras diferentes. Remove tira um elemento conhecido usando o seu conteúdo, já pop remove um elemento usando seu índice, ou seja, a sua posição na lista. Acerto: 1,0 / 1,0 O uso de funções recursivas pode facilitar a implementação de diversos algoritmos. Toda recursão depende de dois elementos: o caso base e o passo recursivo. Dentre as opções a seguir, a que apresenta um passo recursivo é: �b(n)=n-1 + n-2 fat(n)=n*fat(n-1) par(n)=par(n) f(n)=g(n-1) fat(1)=1 Respondido em 13/09/2023 16:19:11 Explicação: O passo recursivo é o elemento que faz o cálculo da função recursiva mover-se em direção ao resultado. Deve envolver a chamada da própria função com um valor diferente de entrada. Isso só acontece na resposta correta: Questão1 a Questão2 a https://simulado.estacio.br/alunos/inicio.asp javascript:voltar(); fat(n)=n*fat(n-1) , passo recursivo da função de cálculo de fatorial. fat(1)=1 é o caso base dessa mesma função. par(n)=par(n) é uma tautologia, e não uma recursão. As demais respostas são funções que não chamam a si mesmas, não podendo ser passos recursivos. Acerto: 1,0 / 1,0 Dada a seguinte matriz M, inicializada com o código: M=[[1,2,3,4],[5,6,7,8],[9,10,11,12],[13,14,15,16]] O código em Python para imprimir cada elemento da coluna iniciada pelo elemento 3 é: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 for coluna in M: print(coluna) for linha in M: print(linha[2]) for linha in M: print(linha) for linha in M: print(linha[3]) print(M[2]) Respondido em 13/09/2023 16:20:29 Explicação: O laço deve percorrer uma coluna, iterando linha a linha e extraindo dela o seu terceiro elemento, ou seja linha[2]. A resposta correta itera pelas linhas e imprime o elemento [2] de cada uma. Dentre as respostas erradas, apenas escrever ¿print(linha)¿ imprimirá cada linha como um todo, resultando na impressão de toda a matriz, linha a linha. A resposta "print(coluna)" terá o mesmo resultado pois para o código linha e coluna são apenas nomes escolhidos pelo programador. Poderia ser i, aux ou qualquer outra variável escolhida. Já "print(linha[3])" está com o índice errado, imprimindo os elementos da coluna iniciada por 4. E ¿print(M[2])¿ imprime toda a linha iniciada por 9. Acerto: 1,0 / 1,0 Suponha que você está implementando um programa que precisa armazenar dados ordenados em uma estrutura para serem tratados posteriormente, na ordem em que foram recebidos. Haverá uma grande quantidade de recebimentos e tratamento de dados, mas o tamanho esperado da estrutura não deve variar muito. Qual tipo de estrutura de dado é a melhor nessa situação? Lista simplesmente encadeada. Fila. Lista em alocação contígua. Pilha. Questão3 a Questão4 a Lista duplamente encadeada. Respondido em 13/09/2023 16:23:29 Explicação: A �la permite o tratamento de nós usando a política requerida, FIFO ¿ ¿�rst in �rst out¿ -. Além disso, as operações de inserção e remoção são O(1), ou seja, de complexidade constante, a melhor possível. Isso condiz com o requisito de que haverá muitas operações desse tipo. Por �m, o fato de a estrutura não variar muito em tamanho permite o uso de uma alocação contígua e otimizada para a �la usando lógica circular e variáveis para o início e �nal da �la. A pilha não obedece a lógica FIFO e as listas tem complexidade de inserção e remoção O(n) sendo muito piores que a �la, principalmente quando o número desses tipos de operação é grande. Acerto: 1,0 / 1,0 Uma Lista pode ser implementada de forma contígua ou encadeada. No caso de uma lista ordenada implementada de forma encadeada, as complexidades de pior caso de busca, inserção e remoção são respectivamente: O(log n), O(n) e O(n). O(n), O(1) e O(n). O(n), O(n) e O(n). O(1), O(n) e O(n). O(n), O(n) e O(1). Respondido em 13/09/2023 16:24:15 Explicação: A busca é O(n) pois no pior caso você terá que percorrer toda a lista sequencialmente até encontrar o último elemento. Já a inserção, no seu pior caso, colocará um elemento no �nal da lista, uma operação simples, mas a busca para achar a posição correta já é O(n). A remoção de qualquer nó também é uma operação de custo constante, bastando reapontar um ponteiro, mas a busca pelo nó a ser removido também é O(n), o que faz a operação de remoção também possuir complexidade O(n). Acerto: 1,0 / 1,0 Uma lista L em alocação contígua está armazenada em memória no endereço 32. L possui elementos de 2 bytes cada e no momento contém [10, 20, 30, 40] . Os elementos 5 e 50 serão inseridos em sequência. Em que endereços eles serão inseridos, respectivamente, caso a lista não seja ordenada, e caso a lista seja ordenada? Não ordenada: 36, 37; ordenada: 32, 33. Não ordenada: 36, 37; ordenada: 32, 37. Não ordenada: 40, 42; ordenada: 40, 42. Não ordenada: 40, 42; ordenada: 32, 42. Não ordenada: 32, 34; ordenada: 32, 34. Respondido em 13/09/2023 16:27:24 Explicação: A inserção na lista não ordenada ocorre ao �nal da lista, o 5o elemento será inserido na posição L[4] ou seja endereço 32 + 4 * 2 = 40 . O elemento seguinte L[5] será inserido no endereço 32 + 5 * 2 = 42. Já no caso ordenado, o primeiro elemento deverá ser inserido na primeira posição L[0], endereço 32. Todos os demais elementos serão deslocados Questão5 a Questão6 a uma posição. O segundo elemento será inserido ao �nal da lista em L[4]. Ou seja, endereço 32 + 4 * 2 = 42 (levando em conta o deslocamento) . Solução é, portanto: 40,42, 32,42. Acerto: 1,0 / 1,0 As árvores de busca são estruturas de dados que armazenam elementos de forma hierárquica, permitindo uma busca e�ciente em grandes conjuntos de dados. Marque a opção correta acerca das estruturas de dados Árvores e Árvores Binárias: As folhas estão sempre no nível 1 da árvore. A raiz está no maior nível da árvore. Nas Árvores Binárias de Busca cada nó deve ter exatamente 2 �lhos. Os nós de uma árvore que possuem grau zero são chamados de raiz. Ao acessar uma árvore, deve-se acessar pela referência a sua raiz. Respondido em 13/09/2023 16:28:12 Explicação: A forma comum de representar uma árvore em memória é utilizando alocação dinâmica. Não representamos a árvore como um todo, mas sim uma referência para sua raiz que guarda a chave (dado) e uma referência para a raiz das sub- árvores esquerda e direita. Um nó pode ter 0, 1 ou 2 �lhos. As folhas podem estar em qualquer nível. A raiz pode ter grau zero quando é raiz e folha simultaneamente. A raiz está sempre no nível 1. Acerto: 0,0 / 1,0 Seja a seguinte árvore binária. Analise as a�rmativas e marque a correta. Supondo que a árvore em questão é uma árvore binária de busca, a inserção de um novo nó com chave 47 pode ser feita em qualquer subárvore vazia. É possível inserir mais um nó �lho ao nó 30. A �gura ilustra uma árvore binária de busca porque para todos os nós vale a seguinte propriedade: os nós contidos na subárvores esquerda são menores que a raiz e os contidos na subárvore direita são maiores. Ao buscar pelo nó 45 na árvore acima, um algoritmo de busca em Python irá realizar sempre O(n) passos. Isto ocorre uma vez que é necessário analisar todos os nós da árvore para encontrar o nó 45. A árvore acima possui 4 nós folhas. Respondido em 13/09/2023 16:32:49 Explicação: A árvore é uma árvore binária de busca porque dado umnó qualquer da árvore, os nós contidos na subárvore esquerda são menores que a raiz e os a direita, maiores que a raiz. A busca só seria executada em O(n) caso a árvore Questão7 a Questão8 a fosse uma árvore zig zag. 47 só poderia ser inserido à direita de 45. A árvore tem 3 folhas. Arvores binárias só podem ter nós com grau 2. Acerto: 1,0 / 1,0 Uma árvore binária de busca auto balanceada é uma estrutura de dados avançada, que otimiza os tempos de inserção, deleção e busca. Um módulo Python que implementa e executa essas atividades e�cientemente é a sbbst (do inglês, self-balancing binary search tree). A complexidade de espaço do módulo sbbst: 0(n2). 0(n log n). 0(log n). 0(n3). 0(n). Respondido em 13/09/2023 16:29:53 Explicação: O módulo sbbst possui espaço O(n) na memória (onde n equivale a quantidade de nós de uma árvore). Acerto: 1,0 / 1,0 Seja a seguinte árvore AVL abaixo. Com a inserção da chave 90, marque a opção que indica exatamente o que acontecerá com a árvore resultante após essa inserção: A árvore resultante irá desbalancear à direita do nó de chave 80. A árvore resultante irá manter o balanceamento geral da árvore. A árvore resultante irá desbalancear à direita do nó de chave 40. A árvore resultante irá desbalancear à esquerda do nó de chave 60. A árvore resultante irá desbalancear à esquerda do nó de chave 10. Respondido em 13/09/2023 16:31:16 Explicação: Ao inserir o nó de chave 90, ele é maior que o nó 80, sendo assim, inserido ao lado direito de 80, causando desbalanceamento do nó 60 que tem altura da subárvore direita 2 e esquerda 0. Questão9 a Questão10 a
Compartilhar