Logo Passei Direto
Buscar

Estrutura de Dados Questões 1

Ferramentas de estudo

Passei Direto Aniversário

Quer receber 70% de desconto para assinar o PasseIA?

Questões resolvidas

Uma função que implementa parte do algoritmo merge sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. No código, inicio e fim são variáveis inteiras que correspondem a posições no vetor de dados, parteinteira significa truncar em zero casas decimais o respectivo cálculo da linha 6 e intercala refere-se a uma função que realiza a ordenação neste método.
Acerca deste algoritmo, assinale a alternativa INCORRETA:
A Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável meio vale 2.
B Na primeira instância aberta da função mergesort na memória do programa, a variável meio corresponde ao valor 4.
C Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2. Você acertou! Fim vale 4.
D Na terceira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2.
E Na primeira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 9.

Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão.
Acerca deste algoritmo, assinale a alternativa CORRETA:
A O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem decrescente. Ordenação é crescente.
B As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser também escritas da seguinte maneira: aux <- X[j+1] X[j+1] <- X[j] X[j] <- aux Você acertou! AULA 2 – TEMA 2. CORRETO.
C Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a lógica do bubble sort, não sendo possível adaptar o código facilmente. Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado.
D Não é possível implementar o bubble sort com laços de repetição do tipo enquanto. É possível implementar com qualquer tipo de laço, para, enquanto ou repita.
E A complexidade deste algoritmo, para o pior caso, é O(logn). Complexidade O(n²).

Filas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o primeiro que sai. Observe o código da fila abaixo construída utilizando listas encadeadas. O código realiza a inserção de um novo elemento nesta fila.
Assinale a alternativa CORRETA acerca de filas implementadas com listas encadeadas:
A O último elemento da lista encadeada deverá conter um ponteiro nulo, conforme indicado na linha 9. Na linha 10.
B As linhas 6, 7 e 8 indicam nos dizem que, para realizar a inserção, precisamos varrer até localizarmos o último elemento, o qual não poderá conter um ponteiro nulo. O último conterá um ponteiro nulo.
C Se o head estiver nulo, significa que podemos inserir um elemento após o head, mesmo que ele esteja nulo. Head nulo significa inserir no local do próprio head.
D A varredura pela posição de inserção inicia no primeiro elemento da lista, conforme indicado na linha 5. Você acertou! Correto.
E Não seria possível substituir o laço de repetição enquanto por uma para-faça devido a condição de parada aplicada. É sempre possível substituir um laço de repetição por outro, basta fazer as devidas adaptações.

No primeiro assunto de nossa disciplina investigamos o que são estruturas de dados e como podemos classificá-las em tipos.
Acerca deste assunto, assinale a alternativa INCORRETA:
A Um dado que pode ser decomposto em partes mais simples, é considerado um dado estruturado e, portanto, uma estrutura de dados.
B Os tipos de dados manipulados por um algoritmo podem ser classificados em duas categorias distintas: os atômicos, que são dados indivisíveis, e os dados compostos, que podem ser divisíveis em mais partes menores.
C Podemos classificar uma estrutura de dados como sendo do tipo homogênea (como registros) ou do tipo heterogênea (como vetores e matrizes). Você acertou! AULA 1 – TEMA 1. Podemos classificar uma estrutura de dados como sendo do tipo heterogênea (como registros) ou do tipo homogênea (como vetores e matrizes).
D Uma estrutura homogênea é aquela cujo tipo dos dados nela armazenados são de um único tipo, como inteiro, real, caractere ou lógico.
E Uma estrutura contendo dados do tipo caractere e do tipo real pode ser considerada uma estrutura de dados heterogênea.

O algoritmo abaixo foi desenvolvido empregando uma lógica iterativa:
Acerca ao algoritmo acima, e trabalhando com os conceitos de complexidade assintótica e recursividade, assinale a alternativa CORRETA:
A A função contém três laços de repetição, sendo que todos os três laços podem acabar sendo executados cada vez que esta função por chamada. Como o valor de x recebido como parâmetro nunca muda dentro da mesma chamada da função, teremos somente 2 laços sendo executados por vez devido a condicional composta.
B A complexidade da função, para o pior caso será O(n³). Como temos somente 2 laços aninhados, a complexidade será O(n²).
C A função não realiza chamadas de si mesma, portanto pode ser considerada uma função recursiva. o tipo para, por laços do tipo enquanto, o desempenho do algoritmo em tempo de execução irá melhorar significativamente, uma vez que o laço enquanto tem um custo inferior ao do para. O custo de todos os três tipos de laços de repetição é o mesmo na análise de complexidade e, virtualmente não faz diferença qual você utiliza.

Uma função que implementa parte do algoritmo quick sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. No código, a função chamada de particao refere-se à função que localiza um pivô no vetor de dados e faz as respectivas trocas dos valores, ordenando seguindo algum critério.
Acerca deste algoritmo, assinale a alternativa INCORRETA:
A A variável pivo_pos localiza a posição a qual conterá o valor de referência para comparações com todos os outros valores do vetor.
B Na linha 11 até a linha 14 comparamos o pivô com todos os valores ao lado direito do mesmo. Caso um valor seja menor que o pivô, ele deve ser colocado para uma posição anterior a do pivô, ou no máximo, no local do pivô.
C Na linha 16 até a linha 19 comparamos o pivô com todos os valores ao lado esquerdo do mesmo. Caso um valor seja maior que o pivô, ele deve ser colocado para uma posição posterior a do pivô, ou no máximo, no local do pivô.
D A troca (linha 21 e 22) pode acontecer entre um valor do lado esquerdo e do lado direito, ou entre o próprio pivô e um dos valores destoantes de cada um dos lados.
E Na linha 4 acessamos a posição do pivô no vetor e na linha 5 acessamos a posição correspondente do vetor conforme calculado na linha 4. Você acertou! Primeiro localizamos a posição (linha 4) e depois o valor daquela posição (linha 5).

No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a inserção em uma lista encadeada.
Assinale a alternativa CORRETA sobre este algoritmo.
A O algoritmo apresentado representa uma inserção no final de uma lista encadeada simples, pois um laço faz a varredura até localizar o final da lista e insere o novo elemento. Não existe laço que varre até o final da lista.
B O algoritmo apresentado representa uma inserção no início de uma lista encadeada dupla, pois a linha 6 mostra o novo elemento apontando para o Head. A lista não é do tipo simples.
C O algoritmo apresentado representa uma inserção no início de uma lista encadeada simples, pois a linha 6 mostra o novo elemento apontando para o Head. Você acertou! CORRETO – AULA 3 – TEMA 2.
D O algoritmo apresentado representa uma inserção no final de uma lista encadeada dupla, pois um laço faz a varredura até localizar o final da lista e insere o novo elemento. Não existe laço que varre até o final da lista e a lista é simples.
E Baseado no algoritmo apresentado, podemos afirmar que este código pertence ao de uma lista encadeada simples e circular. Não podemos afirmar que a lista é circular, pois só saberemos caso víssemos o código de inserção no final da lista.

No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a inserção em uma posição específica da lista encadeada simples.
Assinale a alternativa INCORRETA sobre este algoritmo.
A Nas linhas 7 a 9 temos o laço de repetição que localiza a posição em que o elemento será inserido.
B Na linha 8, a variável ElementoVarredura salta de elemento em elemento da lista, sempre utilizando como referencia o ponteiro para o próximo elemento.
C Nas linhas 10, 11 e 12 fazemos uma troca entre 2 valores da lista encadeada utilizando uma variável auxiliar. Você acertou! Errado, pois não temos uma troca, mas sim a inserção do novo elemento.
D Na linha 10 uma variável auxiliar armazena temporariamente o elemento subsequente ao da posição desejada para inserção.
E Na linha 12, o novo elemento, agora já inserido na respectiva posição da lista, aponta para o elemento armazenado na variável auxiliar, que corresponde ao elemento subsequente ao da posição inserida.

No terceiro assunto de nossa disciplina estudamos uma nova estrutura de dados denominada de LISTA ENCADEADA. Um tipo de lista encadeada é a chamada de LISTA ENCADEADA DUPLA, ou LISTA DUPLAMENTE ENCADEADA.
Acerca de listas encadeadas simples, assinale a alternativa CORRETA:
A Uma lista encadeada dupla só permite a inserção no início desta lista.
B Uma lista encadeada dupla conterá, em cada elemento, dois ponteiros de endereços.
C Uma lista encadeada dupla circular conterá em seu último elemento, o endereço do primeiro elemento da lista.
D Os dados de uma lisa dupla podem ser acessados mais rapidamente que uma simples, devido ao emprego de um ponteiro a mais.
E Uma lista encadeada dupla ocupa o dobro de memória do programa em relação a uma lista simples, pois precisa armazenar duas vezes os dados de cada elemento.

Assuma um vetor de dimensão 10 com dados numéricos e inteiros colocados na seguinte ordem: | 05 | 07 | 08 | 14 | 24 | 29 | 56 | 77 | 78 | 88 | Suponha que você deseja implementar um algoritmo de busca para localizar algum dado neste vetor já ordenado de maneira crescente.
Acerca destes algoritmos e analisando o vetor acima, assinale a alternativa CORRETA:
A - No algoritmo de busca sequencial, o valor 24 seria localizado na 6ª tentativa, se fizermos uma varredura da esquerda para a direita.
B - No algoritmo de busca binária, o valor 24 seria localizado na 3ª tentativa.
C - No algoritmo de busca sequencial, o valor 77 seria localizado mais rapidamente que se comparado com a busca binária.
D - No algoritmo de busca sequencial, o valor 07 seria localizado mais rapidamente que se comparado com a busca binária.
E - Em nenhum cenário de busca o algoritmo sequencial irá localizar o valor antes da busca binária.

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Questões resolvidas

Uma função que implementa parte do algoritmo merge sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. No código, inicio e fim são variáveis inteiras que correspondem a posições no vetor de dados, parteinteira significa truncar em zero casas decimais o respectivo cálculo da linha 6 e intercala refere-se a uma função que realiza a ordenação neste método.
Acerca deste algoritmo, assinale a alternativa INCORRETA:
A Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável meio vale 2.
B Na primeira instância aberta da função mergesort na memória do programa, a variável meio corresponde ao valor 4.
C Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2. Você acertou! Fim vale 4.
D Na terceira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2.
E Na primeira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 9.

Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão.
Acerca deste algoritmo, assinale a alternativa CORRETA:
A O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem decrescente. Ordenação é crescente.
B As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser também escritas da seguinte maneira: aux <- X[j+1] X[j+1] <- X[j] X[j] <- aux Você acertou! AULA 2 – TEMA 2. CORRETO.
C Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a lógica do bubble sort, não sendo possível adaptar o código facilmente. Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado.
D Não é possível implementar o bubble sort com laços de repetição do tipo enquanto. É possível implementar com qualquer tipo de laço, para, enquanto ou repita.
E A complexidade deste algoritmo, para o pior caso, é O(logn). Complexidade O(n²).

Filas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o primeiro que sai. Observe o código da fila abaixo construída utilizando listas encadeadas. O código realiza a inserção de um novo elemento nesta fila.
Assinale a alternativa CORRETA acerca de filas implementadas com listas encadeadas:
A O último elemento da lista encadeada deverá conter um ponteiro nulo, conforme indicado na linha 9. Na linha 10.
B As linhas 6, 7 e 8 indicam nos dizem que, para realizar a inserção, precisamos varrer até localizarmos o último elemento, o qual não poderá conter um ponteiro nulo. O último conterá um ponteiro nulo.
C Se o head estiver nulo, significa que podemos inserir um elemento após o head, mesmo que ele esteja nulo. Head nulo significa inserir no local do próprio head.
D A varredura pela posição de inserção inicia no primeiro elemento da lista, conforme indicado na linha 5. Você acertou! Correto.
E Não seria possível substituir o laço de repetição enquanto por uma para-faça devido a condição de parada aplicada. É sempre possível substituir um laço de repetição por outro, basta fazer as devidas adaptações.

No primeiro assunto de nossa disciplina investigamos o que são estruturas de dados e como podemos classificá-las em tipos.
Acerca deste assunto, assinale a alternativa INCORRETA:
A Um dado que pode ser decomposto em partes mais simples, é considerado um dado estruturado e, portanto, uma estrutura de dados.
B Os tipos de dados manipulados por um algoritmo podem ser classificados em duas categorias distintas: os atômicos, que são dados indivisíveis, e os dados compostos, que podem ser divisíveis em mais partes menores.
C Podemos classificar uma estrutura de dados como sendo do tipo homogênea (como registros) ou do tipo heterogênea (como vetores e matrizes). Você acertou! AULA 1 – TEMA 1. Podemos classificar uma estrutura de dados como sendo do tipo heterogênea (como registros) ou do tipo homogênea (como vetores e matrizes).
D Uma estrutura homogênea é aquela cujo tipo dos dados nela armazenados são de um único tipo, como inteiro, real, caractere ou lógico.
E Uma estrutura contendo dados do tipo caractere e do tipo real pode ser considerada uma estrutura de dados heterogênea.

O algoritmo abaixo foi desenvolvido empregando uma lógica iterativa:
Acerca ao algoritmo acima, e trabalhando com os conceitos de complexidade assintótica e recursividade, assinale a alternativa CORRETA:
A A função contém três laços de repetição, sendo que todos os três laços podem acabar sendo executados cada vez que esta função por chamada. Como o valor de x recebido como parâmetro nunca muda dentro da mesma chamada da função, teremos somente 2 laços sendo executados por vez devido a condicional composta.
B A complexidade da função, para o pior caso será O(n³). Como temos somente 2 laços aninhados, a complexidade será O(n²).
C A função não realiza chamadas de si mesma, portanto pode ser considerada uma função recursiva. o tipo para, por laços do tipo enquanto, o desempenho do algoritmo em tempo de execução irá melhorar significativamente, uma vez que o laço enquanto tem um custo inferior ao do para. O custo de todos os três tipos de laços de repetição é o mesmo na análise de complexidade e, virtualmente não faz diferença qual você utiliza.

Uma função que implementa parte do algoritmo quick sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. No código, a função chamada de particao refere-se à função que localiza um pivô no vetor de dados e faz as respectivas trocas dos valores, ordenando seguindo algum critério.
Acerca deste algoritmo, assinale a alternativa INCORRETA:
A A variável pivo_pos localiza a posição a qual conterá o valor de referência para comparações com todos os outros valores do vetor.
B Na linha 11 até a linha 14 comparamos o pivô com todos os valores ao lado direito do mesmo. Caso um valor seja menor que o pivô, ele deve ser colocado para uma posição anterior a do pivô, ou no máximo, no local do pivô.
C Na linha 16 até a linha 19 comparamos o pivô com todos os valores ao lado esquerdo do mesmo. Caso um valor seja maior que o pivô, ele deve ser colocado para uma posição posterior a do pivô, ou no máximo, no local do pivô.
D A troca (linha 21 e 22) pode acontecer entre um valor do lado esquerdo e do lado direito, ou entre o próprio pivô e um dos valores destoantes de cada um dos lados.
E Na linha 4 acessamos a posição do pivô no vetor e na linha 5 acessamos a posição correspondente do vetor conforme calculado na linha 4. Você acertou! Primeiro localizamos a posição (linha 4) e depois o valor daquela posição (linha 5).

No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a inserção em uma lista encadeada.
Assinale a alternativa CORRETA sobre este algoritmo.
A O algoritmo apresentado representa uma inserção no final de uma lista encadeada simples, pois um laço faz a varredura até localizar o final da lista e insere o novo elemento. Não existe laço que varre até o final da lista.
B O algoritmo apresentado representa uma inserção no início de uma lista encadeada dupla, pois a linha 6 mostra o novo elemento apontando para o Head. A lista não é do tipo simples.
C O algoritmo apresentado representa uma inserção no início de uma lista encadeada simples, pois a linha 6 mostra o novo elemento apontando para o Head. Você acertou! CORRETO – AULA 3 – TEMA 2.
D O algoritmo apresentado representa uma inserção no final de uma lista encadeada dupla, pois um laço faz a varredura até localizar o final da lista e insere o novo elemento. Não existe laço que varre até o final da lista e a lista é simples.
E Baseado no algoritmo apresentado, podemos afirmar que este código pertence ao de uma lista encadeada simples e circular. Não podemos afirmar que a lista é circular, pois só saberemos caso víssemos o código de inserção no final da lista.

No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a inserção em uma posição específica da lista encadeada simples.
Assinale a alternativa INCORRETA sobre este algoritmo.
A Nas linhas 7 a 9 temos o laço de repetição que localiza a posição em que o elemento será inserido.
B Na linha 8, a variável ElementoVarredura salta de elemento em elemento da lista, sempre utilizando como referencia o ponteiro para o próximo elemento.
C Nas linhas 10, 11 e 12 fazemos uma troca entre 2 valores da lista encadeada utilizando uma variável auxiliar. Você acertou! Errado, pois não temos uma troca, mas sim a inserção do novo elemento.
D Na linha 10 uma variável auxiliar armazena temporariamente o elemento subsequente ao da posição desejada para inserção.
E Na linha 12, o novo elemento, agora já inserido na respectiva posição da lista, aponta para o elemento armazenado na variável auxiliar, que corresponde ao elemento subsequente ao da posição inserida.

No terceiro assunto de nossa disciplina estudamos uma nova estrutura de dados denominada de LISTA ENCADEADA. Um tipo de lista encadeada é a chamada de LISTA ENCADEADA DUPLA, ou LISTA DUPLAMENTE ENCADEADA.
Acerca de listas encadeadas simples, assinale a alternativa CORRETA:
A Uma lista encadeada dupla só permite a inserção no início desta lista.
B Uma lista encadeada dupla conterá, em cada elemento, dois ponteiros de endereços.
C Uma lista encadeada dupla circular conterá em seu último elemento, o endereço do primeiro elemento da lista.
D Os dados de uma lisa dupla podem ser acessados mais rapidamente que uma simples, devido ao emprego de um ponteiro a mais.
E Uma lista encadeada dupla ocupa o dobro de memória do programa em relação a uma lista simples, pois precisa armazenar duas vezes os dados de cada elemento.

Assuma um vetor de dimensão 10 com dados numéricos e inteiros colocados na seguinte ordem: | 05 | 07 | 08 | 14 | 24 | 29 | 56 | 77 | 78 | 88 | Suponha que você deseja implementar um algoritmo de busca para localizar algum dado neste vetor já ordenado de maneira crescente.
Acerca destes algoritmos e analisando o vetor acima, assinale a alternativa CORRETA:
A - No algoritmo de busca sequencial, o valor 24 seria localizado na 6ª tentativa, se fizermos uma varredura da esquerda para a direita.
B - No algoritmo de busca binária, o valor 24 seria localizado na 3ª tentativa.
C - No algoritmo de busca sequencial, o valor 77 seria localizado mais rapidamente que se comparado com a busca binária.
D - No algoritmo de busca sequencial, o valor 07 seria localizado mais rapidamente que se comparado com a busca binária.
E - Em nenhum cenário de busca o algoritmo sequencial irá localizar o valor antes da busca binária.

Prévia do material em texto

Questão 1/10 - Estrutura de Dados 
Uma função que implementa parte do algoritmo merge sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para 
que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. 
No código, inicio e fim são variáveis inteiras que correspondem a posições no vetor de dados, parteinteira significa truncar em 
zero casas decimais o respectivo cálculo da linha 6 e intercala refere-se a uma função que realiza a ordenação neste método. 
 
1. Função mergesort(X, inicio, fim) 
2. Var 
3. Meio: inteiro 
4. Inicio 
5. Se (inicio < fim) então 
6. Meio <- parteinteira((inicio + fim) / 2) 
7. mergesort(X, inicio, meio) 
8. mergesort(X, meio + 1, fim) 
9. Intercala(X, inicio, fim, meio) 
10. Fimse 
11. funfunção 
 
A assumindo que a dimensão do vetor de dados X é 10, e que a primeira chamada da função mergesort foi realizada com os 
seguintes parâmetros: Função mergesort(X, 0, 9). 
Acerca deste algoritmo, assinale a alternativa INCORRETA: 
Nota: 10.0 
 
A Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável meio vale 2. 
 
B Na primeira instância aberta da função mergesort na memória do programa, a variável meio corresponde ao valor 4. 
 
C Na segunda instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2. 
Você acertou! 
Fim vale 4. 
 
D Na terceira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 2. 
 
E Na primeira instância aberta da função mergesort na memória do programa, a variável inicio vale zero e a variável fim vale 9. 
 
Questão 2/10 - Estrutura de Dados 
Uma implementação do algoritmo de ordenação do tipo bubble sort pode ser visto abaixo. As partes que envolvem impressão 
de dados na tela e leitura de dados foram omitidas para um melhor entendimento do que é necessário na questão. 
 
X[TAMANHOVETOR], i, j, aux: inteiro 
para i de 1 até TAMANHOVETOR faça 
 para j de 0 até (TAMANHOVETOR - 2) faça 
 se (X[j] > X[j + 1]) então 
 aux <- X[j] 
 X[j] <- X[j + 1] 
 X[j + 1] <- aux 
 fimse 
 fimpara 
fimpara 
Acerca deste algoritmo, assinale a alternativa CORRETA: 
 
Nota: 10.0 
 
A O algoritmo apresentado no exercício realizado a ordenação de dados numéricos, inteiros, em ordem decrescente. 
Ordenação é crescente. 
 
B As linhas de código que correspondem a troca dos valores usando uma variável auxiliar poderiam ser também escritas da seguinte maneira: 
aux <- X[j+1] 
X[j+1] <- X[j] 
X[j] <- aux 
Você acertou! 
AULA 2 – TEMA 2. CORRETO. 
 
C Se precisarmos ordenar dados não numéricos, como caracteres, precisaremos repensar em toda a lógica do bubble sort, não sendo possível adaptar o código facilmente. 
Basta adaptarmos a linha da condicional para funcionar com outro tipo de dado. 
 
D Não é possível implementar o bubble sort com laços de repetição do tipo enquanto. 
É possível implementar com qualquer tipo de laço, para, enquanto ou repita. 
 
E A complexidade deste algoritmo, para o pior caso, é O(logn). 
Complexidade O(n²). 
 
Questão 3/10 - Estrutura de Dados 
Filas apresentam características de inserção e remoção na estrutura de dados seguindo a regra do primeiro que entra é o 
primeiro que sai. Observe o código da fila abaixo construída utilizando listas encadeadas. O código realiza a inserção de um 
novo elemento nesta fila. 
 
1. NovoElemento->dado = numero 
2. se (Head == NULO) então 
3. Head = NovoElemento 
4. Senão 
5. ElementoVarredura = Head 
6. enquanto (ElementoVarredura->prox <> NULO) 
7. ElementoVarredura = ElementoVarredura->prox 
8. Fimenquanto 
9. ElementoVarredura->prox = NovoElemento 
10. NovoElemento->prox = NULO 
11. Fimse 
Considerando que NovoElemento é um novo elemento que será inserido nesta fila, ElementoVarredura é uma variável que 
servirá para localizar o local de inserção, Head é o elemento que está no início da fila, assinale a alternativa CORRETA 
acerca de filas implementadas com listas encadeadas: 
Nota: 10.0 
 
A O último elemento da lista encadeada deverá conter um ponteiro nulo, conforme indicado na linha 9. 
Na linha 10. 
 
B As linhas 6, 7 e 8 indicam nos dizem que, para realizar a inserção, precisamos varrer até localizarmos o último elemento, o qual não poderá conter um ponteiro nulo. 
O último conterá um ponteiro nulo. 
 
C Se o head estiver nulo, significa que podemos inserir um elemento após o head, mesmo que ele esteja nulo 
Head nulo significa inserir no local do próprio head. 
 
D A varredura pela posição de inserção inicia no primeiro elemento da lista, conforme indicado na linha 5. 
Você acertou! 
Correto. 
 
E Não seria possível substituir o laço de repetição enquanto por uma para-faça devido a condição de parada aplicada. 
É sempre possível substituir um laço de repetição por outro, basta fazer as devidas adaptações. 
 
Questão 4/10 - Estrutura de Dados 
No primeiro assunto de nossa disciplina investigamos o que são estruturas de dados e como podemos classificá-las em tipos. 
Acerca deste assunto, assinale a alternativa INCORRETA: 
Nota: 10.0 
 
A Um dado que pode ser decomposto em partes mais simples, é considerado um dado estruturado e, portanto, uma estrutura de dados. 
 
B Os tipos de dados manipulados por um algoritmo podem ser classificados em duas categorias distintas: os atômicos, que são dados indivisíveis, e os dados compostos, 
que podem ser divisíveis em mais partes menores. 
 
C Podemos classificar uma estrutura de dados como sendo do tipo homogênea (como registros) ou do tipo heterogênea (como vetores e matrizes). 
Você acertou! 
AULA 1 – TEMA 1. Podemos classificar uma estrutura de dados como sendo do tipo heterogênea (como registros) ou do tipo homogênea (como vetores e matrizes). 
 
D Uma estrutura homogênea é aquela cujo tipo dos dados nela armazenados são de um único tipo, como inteiro, real, caractere ou lógico 
 
E Uma estrutura contendo dados do tipo caractere e do tipo real pode ser considerada uma estrutura de dados heterogênea. 
 
Questão 5/10 - Estrutura de Dados 
O algoritmo abaixo foi desenvolvido empregando uma lógica iterativa: 
Função Calcula (n: inteiro, x: inteiro): inteiro 
 y: inteiro 
 para i de 0 até n faça 
 se (x < 0) então 
 para i de 0 até n faça 
 y = y + 1 
 fimpara 
 senão 
 para i de 0 até x faça 
 y = y + 1 
 fimpara 
 fimse 
 fimpara 
 retorne y 
Fimfunção 
Acerca ao algoritmo acima, e trabalhando com os conceitos de complexidade assintótica e recursividade, assinale a 
alternativa CORRETA: 
Nota: 0.0 
 
A A função contém três laços de repetição, sendo que todos os três laços podem acabar sendo executados cada vez que esta função por chamada. 
Como o valor de x recebido como parâmetro nunca muda dentro da mesma chamada da função, teremos somente 2 laços sendo executados por vez devido a condicional composta. 
 
B A complexidade da função, para o pior caso será O(n³). 
Como temos somente 2 laços aninhados, a complexidade será O(n²). 
 
C A função não realiza chamadas de si mesma, portanto pode ser considerada uma função recursiva. 
Uma função recursiva é a que realizada chamadas de si mesma. 
 
D Caso exista a possibilidade de implementação deste algoritmo usando uma função recursiva, e sem uso de laços de repetição, a complexidade em tempo de execução da 
implementação irá melhorar. 
AULA 1 – TEMA 3, 4 E 5. Sim, pois implementando com recursividade teremos uma complexidade atrelada a um crescimento logarítmico. 
 
E Caso substituíssemos todos os laços de repetição do tipo para, por laços do tipo enquanto, o desempenho do algoritmo em tempo de execução irá melhorar 
significativamente,uma vez que o laço enquanto tem um custo inferior ao do para. 
O custo de todos os três tipos de laços de repetição é o mesmo na análise de complexidade e, virtualmente não faz diferença qual você utiliza. 
 
Questão 6/10 - Estrutura de Dados 
Uma função que implementa parte do algoritmo quick sort pode ser vista abaixo. Todo o resto do algoritmo foi omitido para 
que analisemos somente este método. O algoritmo completo pode ser visto no material PDF da Aula 2. 
No código, a função chamada de particao refere-se à função que localiza um pivô no vetor de dados e faz as respectivas 
trocas dos valores, ordenando seguindo algum critério. 
No código, vet é o vetor de dados, e troca é a função que realiza uma troca entre dois valores destoantes utilizando uma 
variável auxiliar. 
 
1. int particao(int vet[], int p, int u) 
2. { 
3. int pivo, pivo_pos, i, j; 
4. pivo_pos = (p + u) / 2; 
5. pivo = vet[pivo_pos]; 
6. 
7. i = p - 1; 
8. j = u + 1; 
9. while (i < j) 
10. { 
11. do 
12. { 
13. j--; 
14. } while (vet[j] > pivo); 
15. 
16. do 
17. { 
18. i++; 
19. } while (vet[i] < pivo); 
20. 
21. if (i < j) 
22. troca(vet, i, j); 
23. } 
24. return j; 
25. } 
Acerca deste algoritmo, assinale a alternativa INCORRETA: 
Nota: 10.0 
 
A A variável pivo_pos localiza a posição a qual conterá o valor de referência para comparações com todos os outros valores do vetor. 
 
B Na linha 11 até a linha 14 comparamos o pivô com todos os valores ao lado direito do mesmo. Caso um valor seja menor que o pivô, ele deve ser colocado para uma 
posição anterior a do pivô, ou no máximo, no local do pivô. 
 
C Na linha 16 até a linha 19 comparamos o pivô com todos os valores ao lado esquerdo do mesmo. Caso um valor seja maior que o pivô, ele deve ser colocado para uma 
posição posterior a do pivô, ou no máximo, no local do pivô. 
 
D A troca (linha 21 e 22) pode acontecer entre um valor do lado esquerdo e do lado direito, ou entre o próprio pivô e um dos valores destoantes de cada um dos lados. 
 
E Na linha 4 acessamos a posição do pivô no vetor e na linha 5 acessamos a posição correspondente do vetor conforme calculado na linha 4. 
Você acertou! 
Primeiro localizamos a posição (linha 4) e depois o valor daquela posição (linha 5). 
 
Questão 7/10 - Estrutura de Dados 
No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a 
inserção em uma lista encadeada. 
 
1. NovoElemento->dado = numero 
2. se (Head == NULO) então 
3. Head = NovoElemento 
4. Head->prox = NULO 
5. Senão 
6. NovoElemento->prox = Head 
7. Head = NovoElemento 
8. fimse 
Considerando que NovoElemento é um novo elemento que será inserido nesta lista e Head caracteriza o primeiro elemento 
da lista. Assinale a alternativa CORRETA sobre este algoritmo. 
Nota: 10.0 
 
A O algoritmo apresentado representa uma inserção no final de uma lista encadeada simples, pois um laço faz a varredura até localizar o final da lista e insere o novo 
elemento. 
Não existe laço que varre até o final da lista. 
 
B O algoritmo apresentado representa uma inserção no início de uma lista encadeada dupla, pois a linha 6 mostra o novo elemento apontando para o Head. 
A lista não é do tipo simples. 
 
C O algoritmo apresentado representa uma inserção no início de uma lista encadeada simples, pois a linha 6 mostra o novo elemento apontando para o Head. 
Você acertou! 
CORRETO – AULA 3 – TEMA 2. 
 
D O algoritmo apresentado representa uma inserção no final de uma lista encadeada dupla, pois um laço faz a varredura até localizar o final da lista e insere o novo 
elemento. 
Não existe laço que varre até o final da lista e alista é simples. 
 
E Baseado no algoritmo apresentado, podemos afirmar que este código pertence ao de uma lista encadeada simples e circular. 
Não podemos afirmar que a lista é circular, pois só saberemos caso víssemos o código de inserção no final da lista. 
 
Questão 8/10 - Estrutura de Dados 
No terceiro assunto da disciplina estudamos a estrutura de dados do tipo lista encadeada. O código abaixo representa a 
inserção em uma posição específica da lista encadeada simples. 
 
1. NovoElemento->dado = numero 
2. se (posicao == 0) então 
3. Head = NovoElemento 
4. Head->prox = NULO 
5. Senão 
6. ElementoVarredura = Head 
7. para i de 0 até posicao faça 
8. ElementoVarredura = ElementoVarredura->prox 
9. Fimpara 
10. ElementoAuxiliar = ElementoVarredura->prox 
11. ElementoVarredura->prox = NovoElemento 
12. NovoElemento->prox = ElementoAuxiliar 
13. Fimse 
Considerando que NovoElemento é um novo elemento que será inserido nesta lista, ElementoVarredura é uma variável que 
servirá para localizar o local de inserção, ElementoAuxiliar é uma variável temporária para auxiliar na inserção do dado, Head 
caracteriza o primeiro elemento da lista e prox é o ponteiro para o próximo elemento da lista. Assinale a alternativa 
INCORRETA sobre este algoritmo. 
Nota: 10.0 
 
A Nas linhas 7 a 9 temos o laço de repetição que localiza a posição em que o elemento será inserido. 
 
B Na linha 8, a variável ElementoVarredura salta de elemento em elemento da lista, sempre utilizando como referencia o ponteiro para o próximo elemento. 
 
C Nas linhas 10, 11 e 12 fazemos uma troca entre 2 valores da lista encadeada utilizando uma variável auxiliar. 
Você acertou! 
Errado, pois não temos uma troca, mas sim a inserção do novo elemento. 
 
D Na linha 10 uma variável auxiliar armazena temporariamente o elemento subsequente ao da posição desejada para inserção. 
 
E Na linha 12, o novo elemento, agora já inserido na respectiva posição da lista, aponta para o elemento armazenado na variável auxiliar, que corresponde ao elemento 
subsequente ao da posição inserida. 
 
Questão 9/10 - Estrutura de Dados 
No terceiro assunto de nossa disciplina estudamos uma nova estrutura de dados denominada de LISTA ENCADEADA. Um 
tipo de lista encadeada é a chamada de LISTA ENCADEADA DUPLA, ou LISTA DUPLAMENTE ENCADEADA. 
Acerca de listas encadeadas simples, assinale a alternativa CORRETA: 
Nota: 10.0 
 
A Uma lista encadeada dupla só permite a inserção no início desta lista. 
Permite em qualquer posição. 
 
B Uma lista encadeada dupla conterá, em cada elemento, dois ponteiros de endereços. Um endereço corresponderá ao primeiro elemento da lista e o outro endereço ao 
último elemento da lista. 
Um endereço é do elemento imediatamente subsequente e do anterior, e não do primeiro e último. 
 
C Uma lista encadeada dupla circular conterá em seu último elemento, o endereço do primeiro elemento da lista. E conterá no seu primeiro elemento, o endereço do último 
elemento da lista. Fechando dois círculos. 
Você acertou! 
CORRETO. 
 
D Os dados de uma lisa dupla podem ser acessados mais rapidamente que uma simples, devido ao emprego de um ponteiro a mais. 
Os ponteiros nada impactam no tempo de acesso da lista. 
 
E Uma lista encadeada dupla ocupa o dobro de memória do programa em relação a uma lista simples, pois precisa armazenar duas vezes os dados de cada elemento. 
O fato de existir um ponteiro a mais não impacta significativamente a ponto de dobra o uso de memória. 
 
Questão 10/10 - Estrutura de Dados 
Assuma um vetor de dimensão 10 com dados numéricos e inteiros colocados na seguinte ordem: 
 
| 05 | 07 | 08 | 14 | 24 | 29 | 56 | 77 | 78 | 88 | 
Suponha que você deseja implementar um algoritmo de busca para localizar algum dado neste vetor já ordenado de maneira 
crescente. Você resolve testar a busca sequencial e a busca binária. 
Acerca destes algoritmos e analisando o vetor acima, assinale a alternativa CORRETA: 
Nota: 10.0 
 
A No algoritmo de busca sequencial, o valor 24 seria localizado na 6ª tentativa, se fizermos uma varredura da esquerda para a direita. 
Na 5ª tentativa. 
 
B No algoritmo de busca binária, o valor 24 seria localizadona 3ª tentativa. 
Na 1ª tentativa. 
 
C No algoritmo de busca sequencial, o valor 77 seria localizado mais rapidamente que se comparado com a busca binária. 
Binária se sairia mais rápida. 
 
D No algoritmo de busca sequencial, o valor 07 seria localizado mais rapidamente que se comparado com a busca binária. 
Você acertou! 
CORRETO. Levará menos iterações. 
 
E Em nenhum cenário de busca o algoritmo sequencial irá localizar o valor antes da busca binária. 
É possível que sim, a sequencial ache antes. Dependerá o valor buscado e onde ele se localizado no vetor.

Mais conteúdos dessa disciplina