Você está na página 1de 79

CONHECIMENTOS

ESPECÍFICOS
Estrutura de Dados e Algoritmos

Livro Eletrônico
Presidente: Gabriel Granjeiro
Vice-Presidente: Rodrigo Calado
Diretora de Produção Educacional: Vivian Higashi
Gerência de Produção de Conteúdo: Magno Coimbra

Todo o material desta apostila (incluídos textos e imagens) está protegido por direitos autorais
do Gran Cursos Online. Será proibida toda forma de plágio, cópia, reprodução ou qualquer
outra forma de uso, não autorizada expressamente, seja ela onerosa ou não, sujeitando-se o
transgressor às penalidades previstas civil e criminalmente.

CÓDIGO:
230130316014

SÉRGIO SIERRO

Pós-Graduando em Business Intelligence pela Anhanguera, Engenheiro da


Computação pelo Instituto de Estudos Superiores da Amazônia-IESAM. Atualmente
é Técnico Judiciário no Tribunal Regional Federal da 1ª Região e professor no Gran
Cursos Online. Certificado em diversos fabricantes, como Microsoft (MTA e MCSA)
e VMWare (VSP, VTSP e VCA). Trabalhou na Oi S.A. como Business Development
Manager-BDM, onde ficou responsável na disseminação e apresentação do portfólio
de Soluções de TI e Segurança. Experiência como Consultor de Projetos e Pré-Vendas
de Solução de TI como Datacenter, Virtualização, Armazenamento e Backup, apoiando
as mais diversas empresas em sua Transformação Digital.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

SUMÁRIO
Apresentação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Estrutura de Dados e Algoritmos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1. Estrutura de Dados e Algoritmos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.1. Introdução. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.2. Tipos de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.3. Estrutura de Dados Lineares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4. Estrutura de Dados Não Lineares. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5. Vetores e Matrizes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6. Listas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.7. Filas. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.8. Pilhas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.9. Árvores. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
1.10. Grafos. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
1.11. Tabela de Hash ou Tabela de Dispersão. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
1.12. Algoritmos de Busca Sequencial e Busca Binária . . . . . . . . . . . . . . . . . . . . . . 26
1.13. Algoritmos de Ordenação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Resumo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Questões de Concurso. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
Gabarito. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
Gabarito Comentado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Referências . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 3 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

APRESENTAÇÃO
Olá, concurseiro! Tudo bem?
Sou o Prof. Sergio Sierro. Atualmente sou servidor no TRF 1ª Região, pós-graduado em
Gestão de Tecnologia da Informação e Banco de Dados e Business Intelligence, além de ser
professor de diversas disciplinas de tecnologia da informação para concursos públicos. Faço
parte do Gran Cursos desde 2019 e é um prazer estar com você aqui nessa aula.
Eu e todo a equipe do Gran Cursos estamos aqui para te dar o máximo de dicas, teorias,
exercícios, respondendo questões de provas anteriores e criando questões inéditas para
que você esteja preparado no momento da sua prova.
Em nossa aula, vamos falar sobre estrutura de dados e algoritmos, que são conceitos
fundamentais para programação eficiente e otimizada. Vamos abordar alguns tópicos
importantes como:
• Busca Sequencial e Busca Binária: A busca sequencial é um algoritmo simples e fácil
de implementar que percorre um conjunto de dados de forma linear até encontrar o
elemento desejado. Porém, sua complexidade é O(n), o que significa que o tempo de
execução cresce linearmente com o tamanho do conjunto de dados. A busca binária,
por sua vez, é um algoritmo mais eficiente que reduz pela metade a quantidade de
elementos a serem percorridos a cada iteração. Isso resulta em uma complexidade
O(log n), tornando-o ideal para conjuntos de dados maiores.
• Ordenação: É o processo de rearranjar os elementos de um conjunto de dados de
acordo com uma chave específica, geralmente em ordem crescente ou decrescente.
Existem diversos algoritmos de ordenação, como o Bubble Sort, Selection Sort,
Insertion Sort, Merge Sort e Quick Sort, cada um com vantagens e desvantagens
dependendo do contexto e tamanho do conjunto de dados.
• Listas: São estruturas de dados que permitem o armazenamento de um conjunto de
elementos em uma ordem específica. Existem diversos tipos de listas, como a lista
simplesmente encadeada, lista duplamente encadeada e lista circular, cada uma com
suas particularidades.
• Pilhas: São estruturas de dados que permitem o armazenamento de elementos seguindo
a lógica LIFO (Last In, First Out), ou seja, o último elemento inserido é o primeiro a
ser retirado. Isso torna as pilhas úteis para diversas aplicações, como a verificação de
expressões matemáticas e a implementação de backtracking em algoritmos.
• Filas: São estruturas de dados que permitem o armazenamento de elementos seguindo
a lógica FIFO (First In, First Out), ou seja, o primeiro elemento inserido é o primeiro a
ser retirado. Isso as torna úteis para diversas aplicações, como o gerenciamento de
tarefas em um sistema operacional.
• Árvores Binárias: São estruturas de dados que permitem o armazenamento de
elementos emlivro
O conteúdo deste uma estrutura
eletrônico hierárquica,
é licenciado em por
para Foco - , vedada, que cada meios
quaisquer nó pode ter no
e a qualquer título,máximo dois
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 4 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

filhos. Essa estrutura é útil para diversas aplicações, como a representação de dados
em bancos de dados, a criação de árvores de decisão em algoritmos de inteligência
artificial, entre outros.
Bom, isso é apenas uma breve introdução sobre alguns dos principais tópicos que vamos
abordar nesta aula sobre Estrutura de Dados e Algoritmos.
As referências bibliográficas estarão presentes ao final da nossa aula.
Espero que você goste do que vamos estudar e do material desenvolvido. Não se esqueça
de deixar sua avaliação na plataforma, pois isso é extremamente valioso para nós.
Também estou sempre a disposição para responder possíveis dúvidas no fórum do aluno.
Então, vamos lá!
Prof. Esp. Sergio Sierro
@sergiosierro

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 5 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

ESTRUTURA DE DADOS E ALGORITMOS

1. ESTRUTURA DE DADOS E ALGORITMOS

1.1. INTRODUÇÃO
A estrutura de dados e algoritmos são fundamentais no desenvolvimento de sistemas
computacionais. A estrutura de dados é a organização lógica e física dos dados em um
sistema, enquanto os algoritmos são as sequências de passos lógicos que permitem
manipular esses dados para realizar uma tarefa específica.
A estrutura de dados inclui tipos de dados básicos, como inteiros, caracteres, booleanos,
entre outros, além de estruturas mais complexas, como arrays, listas, pilhas, filas, árvores,
grafos e hash tables. Cada estrutura é projetada para armazenar e manipular dados de
maneira eficiente, dependendo do tipo de dados e da tarefa que se deseja executar.
A estrutura de dados se preocupa com a organização e armazenamento de dados em
um sistema, fornecendo uma maneira de acessar e manipular esses dados. As estruturas
de dados podem ser classificadas em dois tipos principais: as estáticas e as dinâmicas.
As estruturas estáticas são aquelas cujo tamanho não pode ser alterado depois de
criadas, como matrizes e vetores. Por outro lado, as estruturas dinâmicas, como listas
encadeadas, filas e pilhas, permitem a adição e remoção de elementos sem a necessidade
de realocação de memória.
Por sua vez, os algoritmos são sequências de instruções lógicas que permitem a realização
de uma tarefa específica. Um algoritmo é composto por um conjunto de passos bem
definidos que, quando executados em sequência, produzem um resultado. Cada passo deve
ser preciso e não ambíguo, de modo que o resultado seja correto e previsível.
Os algoritmos podem ser classificados de acordo com a sua finalidade, como algoritmos
de busca, ordenação, criptografia, entre outros. Cada tipo de algoritmo possui um conjunto
de técnicas e estruturas de dados associadas que visam melhorar a eficiência e a velocidade
da solução.
Ao combinar as estruturas de dados com os algoritmos, é possível criar soluções
eficientes para uma ampla variedade de problemas. Por exemplo, a busca sequencial e a
busca binária são algoritmos utilizados para procurar um elemento em um conjunto de
dados. A escolha do algoritmo a ser utilizado pode depender do tamanho dos dados e da
necessidade de otimização do tempo de execução. Outro exemplo inclui algoritmos de
ordenação, como o bubblesort, o mergesort e o quicksort são utilizados para classificar
dados em uma lista de maneira eficiente.
As listas, pilhas e filas são outras estruturas de dados comuns que podem ser usadas
em conjunto com algoritmos para resolver problemas específicos. As listas, por exemplo,
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 6 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

são usadas para armazenar e gerenciar conjuntos de dados que precisam ser acessados
em sequência. As pilhas, por outro lado, são usadas para armazenar dados em uma ordem
específica, permitindo que o último item adicionado seja o primeiro a ser removido. Já as
filas são usadas para armazenar dados em ordem de chegada, permitindo que o primeiro
item adicionado seja o primeiro a ser removido.
Uma estrutura de dados eficiente permite o acesso e manipulação dos dados de forma
mais rápida e eficiente, enquanto um algoritmo bem projetado permite realizar tarefas
de forma mais rápida e precisa.

1.2. TIPOS DE DADOS


Os tipos de dados são um conceito fundamental na programação de computadores
e em estruturas de dados. São uma forma de classificar e estruturar informações em um
programa de computador. São usados para definir a forma como os dados serão armazenados
e manipulados, permitindo que sejam organizados de forma lógica e coerente.
Os tipos de dados são categorias em que os dados podem ser classificados, e cada tipo
tem suas próprias características e regras para armazenamento e manipulação. Existem
vários tipos de dados:
• Inteiro (integer): São números inteiros, positivos ou negativos, sem casa decimal. Por
exemplo, -10, 0, 1, 2, 3 e 10 são todos inteiros. Em geral, um inteiro é armazenado
como uma sequência de bits em um computador, e o número de bits usados para
armazenar o inteiro depende da arquitetura do computador. Na maioria dos sistemas
modernos, os inteiros são armazenados em 32 bits ou 64 bits;
• Ponto flutuante (float): São números reais com casas decimais. Por exemplo, 1.0, 2.5
e 3.1416 são todos números de ponto flutuante. Os números de ponto flutuante são
armazenados como uma mantissa (a parte significativa do número) e um expoente (o
número de casas decimais). O tamanho padrão para um número de ponto flutuante
é de 32 bits ou 64 bits;
• Caractere (character): São símbolos, letras, números e outros caracteres especiais
usados em um texto. Por exemplo, ‘a’, ‘b’, ‘1’ e ‘&’ são todos caracteres. Um caractere
é armazenado como um número inteiro que corresponde ao código ASCII ou Unicode
do caractere. Na maioria dos sistemas, um caractere é armazenado em 8 bits;
• Booleano (boolean): Possui apenas dois valores possíveis: verdadeiro (true) ou falso
(false). Esse tipo de dados é frequentemente usado em condições e expressões lógicas;
• Texto (strings): São sequências de caracteres que formam palavras, frases e outras
informações de texto. As strings são armazenadas como um vetor de caracteres,
e cada caractere é armazenado em um byte. As strings podem ser concatenadas,
comparadas e manipuladas usando funções especiais.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 7 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Cada tipo de dados tem suas próprias regras e operações para armazenamento e
manipulação.

1.3. ESTRUTURA DE DADOS LINEARES


As estruturas de dados lineares são aquelas que permitem armazenar e acessar dados
de forma sequencial, ou seja, um após o outro. As principais estruturas de dados lineares
são: listas, pilhas e filas.
• Array: É um tipo de estrutura de dados que armazena elementos do mesmo tipo. Estas
são as estruturas de dados mais básicas e fundamentais. Os dados armazenados em
cada posição de uma array recebem um valor positivo denominado índice do elemento.
O índice ajuda a identificar a localização dos elementos em uma array;
• Filas: É uma estrutura de dados em que os elementos são armazenados de forma
que o primeiro elemento adicionado é o primeiro a ser removido. Essa estrutura
segue a regra do FIFO (First In, First Out), ou seja, o primeiro elemento a entrar na
fila é o primeiro a sair. As operações básicas em uma fila são enqueue (adicionar um
elemento no final) e dequeue (remover um elemento do início);
• Listas: É uma coleção de elementos, cada um com um valor e um ponteiro para o
próximo elemento da lista. As listas podem ser simplesmente encadeadas, duplamente
encadeadas ou circularmente encadeadas;
• Pilhas: É uma estrutura de dados em que os elementos são armazenados de forma
que o último elemento adicionado é o primeiro a ser removido. Essa estrutura segue
a regra do LIFO (Last In, First Out), ou seja, o último elemento a entrar na pilha é o
primeiro a sair. As operações básicas em uma pilha são push (adicionar um elemento
no topo) e pop (remover um elemento do topo);

As estruturas de dados lineares permitem manipular conjuntos de dados de forma


organizada e eficiente. Por exemplo, uma lista pode ser utilizada para armazenar uma lista
de tarefas a serem executadas, enquanto uma pilha pode ser utilizada para implementar
a função de desfazer (undo) em um editor de texto, e uma fila pode ser utilizada para
implementar uma fila de impressão em um sistema operacional.
As estruturas de dados lineares podem ser implementadas tanto de forma estática
quanto dinâmica. Na implementação estática, o tamanho da estrutura de dados é definido
em tempo de compilação e a memória é alocada de forma contígua. Na implementação
dinâmica, a memória é alocada de forma não contígua e a estrutura de dados pode crescer
ou diminuir dinamicamente conforme a necessidade.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 8 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

1.4. ESTRUTURA DE DADOS NÃO LINEARES


As estruturas de dados não lineares não são sequenciais como as estruturas de dados
lineares. Em outras palavras, não são organizadas em uma sequência lógica de elementos.
Isso significa que cada elemento em uma estrutura de dados não linear pode apontar
para mais de um elemento, formando uma hierarquia de elementos.
As estruturas de dados não lineares mais comuns são as árvores e os grafos:
• Árvores: Consistem em um conjunto de nós que estão interconectados por meio de
um conjunto de ramificações ou arestas. Cada nó pode ter um ou mais filhos, exceto
o nó raiz, que não tem pai. Os nós filhos podem ter outros nós filhos, formando uma
hierarquia descendente de elementos. As árvores são amplamente utilizadas em
computação, incluindo em estruturas de diretórios de arquivos, na representação de
uma sintaxe de linguagem de programação e na modelagem de dados hierárquicos;
• Grafos: Consistem em um conjunto de vértices ou nós, conectados por um conjunto
de arestas. Cada aresta conecta dois nós, e pode ser direcionada (quando há uma
direção definida entre os nós) ou não direcionada (quando a conexão é bidirecional).
Os grafos são amplamente utilizados em ciência da computação, especialmente em
redes de computadores e em algoritmos de caminho mais curto, como o algoritmo
de Dijkstra.

1.5. VETORES E MATRIZES


Os arrays e matrizes são estruturas de dados que armazenam uma coleção de valores do
mesmo tipo. A principal diferença entre eles é que um array é uma coleção unidimensional
de elementos, enquanto uma matriz é uma coleção bidimensional de elementos organizados
em linhas e colunas.
Um vetor (ou array uni-dimensional) é uma variável que armazena várias variáveis do
mesmo tipo. Por exemplo, podemos utilizar um vetor de 50 posições para armazenar os
nomes de 50 alunos.

Fonte: https://dicasdeprogramacao.com.br/o-que-sao-vetores-e-matrizes-arrays/

Em um array, cada elemento pode ser acessado por um índice inteiro, que indica a
posição do elemento na coleção.
Uma matriz (ou array multi-dimensional) é um vetor de vetores. Por exemplo, precisamos
de uma matriz para armazenar as 4 notas de cada um dos 50 alunos. Ou seja, um vetor de
50 posições, e em
O conteúdo cada
deste posição
livro eletrônico do vetor,
é licenciado há outro
para Foco vetor
- , vedada, com 4
por quaisquer posições.
meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 9 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://dicasdeprogramacao.com.br/o-que-sao-vetores-e-matrizes-arrays/

Em uma matriz, cada elemento é identificado por um par de índices que indica a linha
e a coluna em que ele está localizado.
Tanto arrays quanto matrizes possuem um tamanho fixo, que é definido no momento
da sua criação. Isso significa que não é possível adicionar ou remover elementos depois que
a estrutura é criada. Para modificar um elemento em um array ou matriz, basta acessá-lo
pelo índice correspondente e atribuir um novo valor a ele.

1.6. LISTAS
As listas são estruturas de dados que permitem armazenar um conjunto de elementos
de forma organizada e dinâmica. Diferentemente do array, que tem tamanho fixo, as listas
são flexíveis e podem crescer ou encolher à medida que novos elementos são adicionados
ou removidos.
As listas podem ser implementadas de diversas maneiras, sendo as mais comuns as
listas encadeadas, listas duplamente encadeadas e listas circulares:
• Lista encadeada: É uma coleção de elementos, onde cada elemento é armazenado em
um nó, e conectado a um ou mais nós adjacentes por meio de ponteiros. O primeiro
nó da lista é chamado de cabeça (head) e o último é chamado de cauda (tail). Cada nó
contém dois campos, um campo para armazenar o valor do elemento e outro campo
para armazenar o ponteiro para o próximo nó da lista. O último nó da lista possui um
ponteiro nulo, indicando o fim da lista;

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 10 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://medium.com/aprendacpp/criando-uma-lista-encadeada-em-c-17e7f5692f36

• Lista duplamente encadeada: Semelhante a uma lista encadeada, mas cada nó


contém dois ponteiros, um para o próximo nó da lista e outro para o nó anterior. Isso
permite que a lista seja percorrida em ambas as direções, facilitando operações como
a inserção ou remoção de elementos em uma posição específica da lista;

Fonte: http://www.sergioportari.com.br/wp-content/uploads/2018/11/aula06b-Listas-circular-e-duplamente.pdf

• Lista circular: É uma lista encadeada onde o último nó da lista tem um ponteiro
que aponta para o primeiro nó, formando um círculo. Dessa forma, a lista pode ser
percorrida infinitamente, sem ter um fim definido.

Fonte: https://www.devmedia.com.br/linkedlists-o-que-acontece-por-tras-da-interface/24613
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 11 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Além desses tipos de listas, também existem as listas simplesmente encadeadas, que
são listas encadeadas que só permitem percorrer a lista em uma única direção, e as listas
duplamente encadeadas circulares, que são uma combinação das características das listas
duplamente encadeadas e circulares.
Em termos de operações, as listas permitem a inserção de um elemento no início, fim
ou em uma posição específica da lista, bem como a remoção de um elemento. Também é
possível percorrer a lista, acessar um elemento em uma posição específica ou verificar se
a lista está vazia.
As operações básicas em uma lista incluem:
• Inserção: adicionar um novo elemento à lista;
• Remoção: excluir um elemento existente da lista;
• Busca: encontrar a posição de um elemento na lista;
• Acesso: acessar o valor de um elemento em uma determinada posição na lista;
• Atualização: modificar o valor de um elemento existente na lista;
• Ordenação: rearranjar os elementos da lista em uma ordem específica.

1.7. FILAS
As filas são uma estrutura de dados linear que segue o princípio de “primeiro a entrar,
primeiro a sair” (FIFO – First In, First Out), ou seja, o primeiro elemento a ser inserido na fila
é o primeiro a ser removido. As operações básicas em uma fila são a inserção de elementos
no final da fila (enqueue) e a remoção do elemento no início da fila (dequeue). É possível
também acessar o elemento no início da fila sem removê-lo (peek ou front), verificar se a
fila está vazia (empty) e limpar todos os elementos da fila (clear).

Fonte: https://infoblogsi.wordpress.com/2014/10/05/aula-7-listas-filas-pilhas-e-arvores/

Existem três tipos principais de filas: fila comum (também conhecida como fila linear),
fila circular e fila com prioridade:
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 12 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

• Fila comum: É a estrutura de dados mais simples em que os elementos são adicionados
ao final da fila e removidos do início da fila, seguindo uma ordem de chegada. Essa
implementação é adequada quando a ordem dos elementos é importante e a
prioridade é igual para todos. A fila é conhecida como linear porque seus elementos
são organizados em uma linha reta, seguindo uma ordem específica. Ou seja, os
elementos são inseridos no final da fila e removidos do início da fila, mantendo
sempre uma ordem sequencial;
• Fila circular: É uma variação da fila comum em que os elementos são organizados em
um círculo. O último elemento da fila está conectado ao primeiro, formando um círculo;
• Fila com prioridade: é uma implementação em que cada elemento é associado a
uma prioridade e os elementos são organizados na fila de acordo com a ordem das
prioridades. Elementos com prioridades mais altas são removidos primeiro. Esse tipo
de fila é comum em aplicações em que a ordem de chegada não é tão importante
quanto a prioridade, como em um sistema de atendimento médico, em que pacientes
em estado crítico recebem atendimento prioritário em relação a pacientes com
condições menos graves.

Fonte: https://acervolima.com/vantagens-da-fila-circular-em-relacao-a-fila-linear/

1.8. PILHAS
As pilhas são estruturas de dados lineares que armazenam uma coleção de elementos,
onde a inserção e a remoção dos elementos ocorrem apenas em uma extremidade da pilha,
conhecida como o topo. A pilha segue a regra LIFO (Last In, First Out), ou seja, o último
elemento inserido na pilha é o primeiro a ser removido.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 13 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

As duas principais operações em uma pilha são push e pop. A operação push é utilizada
para inserir um elemento na pilha, colocando-o no topo da pilha. A operação pop é utilizada
para remover o elemento do topo da pilha. Também é possível realizar uma operação peek
ou top, que permite verificar o elemento no topo da pilha sem removê-lo.

Fonte: https://www.cos.ufrj.br/~rfarias/cos121/pilhas.html

As pilhas são comumente utilizadas em aplicações que envolvem a inversão de ordem,


como na realização de operações matemáticas, onde o último número a ser adicionado é
o primeiro a ser removido. Elas também podem ser utilizadas em algoritmos de busca e de
processamento de linguagens naturais. Além disso, as pilhas são frequentemente usadas
em programas de computador para gerenciamento de memória, em que a alocação e a
liberação de memória são realizadas através de pilhas.
Existem várias variações da estrutura de dados de pilha, como a pilha estática, que usa um
array com tamanho fixo para armazenar os elementos, e a pilha dinâmica, que usa uma lista
encadeada para armazenar os elementos e pode crescer ou encolher conforme necessário.

1.9. ÁRVORES
Uma árvore é uma estrutura de dados não linear em que os elementos, chamados de
nós, são organizados em uma hierarquia ou em estrutura semelhante a uma árvore. A árvore
consiste em um nó raiz, que é o nó superior, e vários nós filhos, que são conectados ao nó
pai diretamente acima deles. Os nós que não possuem filhos são chamados de nós folha,
enquanto os nós com um ou mais filhos são chamados de nós internos. Além disso, os nós
que possuem o mesmo pai são chamados de irmãos.
Os nós em uma árvore são conectados por meio de arestas, que representam as conexões
entre os nós. Cada nó em uma árvore pode ter zero ou mais filhos, e cada filho pode ter
zero ou mais filhos. Uma árvore é dita ser uma árvore vazia se não tiver nenhum nó.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 14 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://rosbergguedes.medium.com/estruturas-de-dados-%C3%A1rvore-bc1a651e6533

No exemplo da árvore acima temos que o nó A é o nó raiz e os nós B, C e D são nós


filhos do nó A. Podemos notar também que os nós B e D possuem nós filhos, mas o nó C
não possui nenhum nó filho.
Também podemos considerar que uma árvore é uma estrutura de dados hierárquica.
A hierarquia na árvore é definida pelos níveis, que são compostos pelos nós que têm a
mesma distância da raiz. Ou seja, o nível 0 é a própria raiz, o nível 1 é composto pelos filhos
diretos da raiz, o nível 2 pelos filhos dos nós do nível 1 e assim por diante.
Existem vários tipos de árvores, incluindo árvores binárias, árvores de busca binárias,
árvores AVL, árvores vermelho-preto, entre outras.
Uma árvore binária é uma estrutura de dados em que cada nó pode ter no máximo dois
filhos, um filho esquerdo e um filho direito. Cada filho, por sua vez, pode ser um nó folha
(sem filhos) ou um nó interno (com um ou dois filhos). Essa estrutura de árvore é muito
utilizada em algoritmos de busca e ordenação.
É caracterizada por:
• Ou não tem elemento algum (árvore vazia);
• Ou tem um elemento distinto, denominado raiz, com dois ponteiros para duas
estruturas diferentes, denominadas subárvore esquerda e subárvore direita.
A profundidade de um nó é a distância deste nó até o nó raiz. Um conjunto de nós com
a mesma profundidade é denominado nível da árvore. A maior profundidade de um nó, é
a altura da árvore. Uma árvore “estritamente binária” é uma árvore na qual todo nó tem
zero ou duas folhas.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 15 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://blog.cod3r.com.br/estruturas-de-dados-arvores-binarias/

Observe que nas árvores binárias só existe um caminho a percorrer, indo do nó raiz
aos nós folha.

A altura de uma árvore é definida como o número máximo de nós no caminho mais longo
da raiz até uma folha da árvore. Ou seja, é o comprimento do caminho mais longo da raiz
até um nó folha. Uma árvore vazia tem altura zero e uma árvore com um único nó tem
altura um.

O percurso é o processo de visitar cada nó exatamente uma vez, respeitando determinada


ordem. É realizado de forma recursiva. A busca começa examinando o nó raiz. Se a árvore
está vazia, o valor procurado não pode existir na árvore. Caso contrário, se o valor é igual
a raiz, a busca foi bem-sucedida. Se o valor é menor do que a raiz, a busca segue pela
subárvore esquerda. Se o valor é maior do que a raiz, a busca segue pela subárvore direita.
Esse processo é repetido até o valor ser encontrado ou a subárvore ser nula (vazia). Se o
valor não for encontrado até a busca chegar na subárvore nula, então o valor não deve
estar presente na árvore.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 16 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Existem três tipos de percursos em árvores binárias:


• Em ordem (in-order): Visita-se primeiro o nó esquerdo, depois o próprio nó e, por
fim, o nó direito. Este percurso é utilizado para visitar os nós em ordem crescente;
• Pré-ordem (pre-order): Visita-se primeiro o próprio nó, depois o nó esquerdo e, por
fim, o nó direito. Este percurso é utilizado para imprimir a expressão em notação
prefixada (prefixa);
• Pós-ordem (post-order): Visita-se primeiro o nó esquerdo, depois o nó direito e, por
fim, o próprio nó. Este percurso é utilizado para imprimir a expressão em notação
posfixada (posfixa).
Uma árvore binária de busca é um tipo especial de árvore binária em que cada nó possui
no máximo dois filhos e todos os nós da subárvore esquerda possuem um valor numérico
inferior ao nó raiz e todos os nós da subárvore direita possuem um valor superior ao nó raiz
(esta é a forma padrão, podendo as subárvores serem invertidas). O objetivo desta árvore
é estruturar os dados de forma a permitir busca binária.

Fonte: https://www.ime.usp.br/~pf/algoritmos/aulas/binst.html

Uma propriedade importante das árvores binárias de busca é que os dados são
armazenados de forma ordenada, de modo que a busca pode ser realizada de forma
eficiente. Além da operação de busca, as árvores binárias de busca também suportam
as operações de inserção e remoção de elementos. Ao inserir um novo elemento, ele é
colocado na posição adequada na árvore de acordo com a ordem das chaves. Ao remover um
elemento, é necessário garantir que a propriedade de ordem da árvore ainda seja mantida.
Se o elemento a ser removido tiver filhos, é preciso escolher um dos filhos para ocupar a
sua posição, de forma a manter a propriedade de ordem.
Uma árvore binária balanceada (ou árvore AVL) é uma árvore binária na qual as alturas
das duas subárvores de todo nó nunca difere em mais de 1. O balanceamento de um nó é
definido como a altura de sua subárvore esquerda menos a altura de sua subárvore direita.
A altura Ode uma deste
conteúdo árvore bináriaé licenciado
livro eletrônico é o nível máximo
para de suas
Foco - , vedada, folhas
por quaisquer (profundidade).
meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 17 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Cada nó em uma árvore AVL tem balanceamento de 1, -1 ou 0. Se o valor do balanceamento


do nó for diferente de 1, -1 e 0. Essa árvore não é balanceada. Se a probabilidade de
pesquisar um dado for a mesma para todos os dados, a árvore AVL irá determinar a busca
mais eficiente.
Observe alguns exemplos de árvores balanceadas (a e b) e não balanceadas (c e d) na
figura a seguir:

Fonte: https://www.facom.ufu.br/~claudio/Cursos/Antigos/EDxxxx/Artigos/bcc-ed05.pdf

Analisando as quatro árvores da figura acima podemos notar que, para o nó que possui o
valor 14, a diferença da altura das subárvores da direita e da esquerda é igual a 0 na árvore
(a) e de 1 na árvore (b). Na árvore (a) também podemos dizer que a árvore é perfeitamente
balanceada, já que não há diferença entre as alturas das subárvores da direita e da esquerda.
Na árvore (c), para o nó que possui o valor 14, a altura da subárvore da esquerda é 4 e a altura
da subárvore da direita é 2. Portanto, a diferença é 2, assim, essa árvore não está balanceada.
O mesmo ocorre com a árvore (d) para o nó que possui valor 14, a subárvore da esquerda
tem altura 3 e a subárvore da direita tem altura 1, resultando em uma diferença de 2.
A estrutura de uma árvore AVL é semelhante a uma árvore binária de busca convencional,
com cada nó contendo uma chave e dois filhos (um filho esquerdo e um filho direito). A
diferença é que, após cada operação de inserção ou exclusão, a árvore é reequilibrada para
manter a altura balanceada.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 18 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Observe um exemplo de árvore não AVL:

Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_AVL

Agora observe essa mesma árvore, só que agora como uma árvore AVL:

Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_AVL

Existem quatro tipos de rotações que podem ser executadas em uma árvore AVL para
reequilibrá-la: rotação simples à esquerda, rotação simples à direita, rotação dupla à
esquerda e rotação dupla à direita. As rotações consistem em reorganizar a estrutura da
árvore, modificando as posições dos nós, para que a árvore seja equilibrada novamente.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 19 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Uma árvore B (B-Tree) é uma estrutura de dados balanceada usada para indexar bancos
de dados. É uma árvore m-way, o que significa que cada nó pode ter até m filhos. O número
de chaves em cada nó não folha deve ser um a menos que o número de filhos. As chaves
em cada nó são ordenadas de forma crescente, e para cada chave há dois endereços para
as páginas filhas.
A árvore B (B-Tree) é uma árvore binária que possui um conjunto de nós que armazenam
registros. Cada nó possui um número definido de chaves e ponteiros. As chaves são usadas
para classificar os registros armazenados nos nós e os ponteiros são usados para indicar
o nó pai e filhos de um nó.

Fonte: https://www.programiz.com/dsa/b-tree

Cada nó interno em uma árvore B (B-Tree) armazena uma lista ordenada de chaves que
são usadas para indexar os dados armazenados na árvore. Os nós internos não armazenam
os dados em si, mas apontam para os filhos que contêm os dados correspondentes. Os nós
folha, por outro lado, armazenam as chaves e os dados correspondentes.
Uma árvore B (B-Tree) de ordem m é uma estrutura de dados balanceada que é usada
para indexar bancos de dados. Cada nó pode ter até m filhos, desde que cada filho esteja
organizado no contexto de uma árvore de busca e todas as folhas estejam no mesmo nível.
O número de chaves em cada nó não folha deve ser um a menos que o número de filhos. A
altura da árvore é diretamente proporcional ao número de nós na árvore e é geralmente
representada como O(log(N)). As chaves em cada nó são ordenadas de forma crescente, e
para cada chave há dois endereços para as páginas filhas.
Uma árvore rubro-negra é uma árvore binária de busca autobalanceada que é
construída a partir de um conjunto de nós vermelhos e pretos. Esta estrutura de dados
é projetada para manter os elementos em ordem e para permitir que operações como
inserção, remoção e busca sejam executadas de forma eficiente.
Uma árvore rubro-negra é uma árvore de busca binária onde cada nó tem um atributo
de cor, vermelho ou preto. Além dos requisitos ordinários impostos pelas árvores de busca
binárias, as árvores rubro-negras têm os seguintes requisitos adicionais:
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 20 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

• Cada nó é vermelho ou preto;


• A raiz é sempre preta;
• Se um nó é vermelho, seus filhos devem ser pretos;
• Cada caminho de um nó para um nó folha deve ter o mesmo número de nós pretos.

Fonte: https://pt.wikipedia.org/wiki/%C3%81rvore_rubro-negra

Essas propriedades garantem que a árvore rubro-negra esteja sempre balanceada.


A propriedade 1 significa que cada nó tem uma cor, que pode ser vermelho ou preto. A
propriedade 2 significa que a raiz da árvore deve ser sempre preta. A propriedade 3 significa
que se um nó é vermelho, seus filhos devem ser pretos para garantir que não haja dois nós
vermelhos consecutivos em um caminho da raiz para um nó folha. A propriedade 4 significa
que cada caminho da raiz para um nó folha deve ter o mesmo número de nós pretos para
garantir que a árvore esteja sempre balanceada.

1.10. GRAFOS
Um grafo é uma estrutura de dados usada para representar relações entre elementos
de um conjunto. Um grafo é composto de vértices (também chamados de nós) e arestas
(ou ligações) que conectam cada vértice a outro. Cada vértice representa um elemento do
conjunto e suas conexões representam a relação entre os elementos. Grafos são usados
para representar diversas estruturas de dados, como redes, árvores, fluxos de trabalho,
circuitos e muito mais. Eles são também usados para resolver problemas de programação
e problemas de otimização.
Conceitualmente, um grafo é composto por um conjunto discreto de elementos que
representam a existência de algo material ou imaginário. Estes elementos se relacionam. Os
elementos do conjunto discreto em questão são interconectados por relações de um padrão
de incidência bem definido, e estas relações fazem parte do grafo, elas são expressas por
arestas, Oenquanto oslivroelementos
conteúdo deste interconectados
eletrônico é licenciado são
para Foco - , vedada, porexpressos por
quaisquer meios vértices.
e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 21 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Um grafo é constituído por um conjunto de vértices, um conjunto de arestas e uma


função de incidência:
• Os vértices são elementos, inter-relacionados de alguma forma, pertencentes a um
conjunto discreto (enumerável);
• As arestas são elementos de um conjunto discreto que descrevem, de alguma forma,
as relações entre os vértices do grafo;
• A função de incidência é uma função que mapeia, para cada aresta do grafo, um par
de vértices envolvidos no relacionamento.
Grafos normalmente são representados graficamente por diagramas, onde os vértices
são pontos e as arestas são linhas (ou setas, no caso dos dígrafos) que ligam os pontos dos
respectivos vértices envolvidos no relacionamento.

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416

No grafo da figura acima, temos um conjunto de vértices VG = {A, B, C, D}, e um conjunto


de arestas aG = {1, 2, 3, 4}. A função de incidência ΨG mapeia as relações do conjunto de
arestas da seguinte forma:

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 22 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Existe a necessidade de representar relações que não sejam mútuas, há duas categorias
de grafos: os não-direcionados e os direcionados.
Os grafos não-direcionados são aqueles cujas arestas não possuem direção. Essa falta
de direção indica que a relação representada pela aresta é simétrica, ou seja, se há uma
aresta que conecta o vértice A ao vértice B, há também uma aresta que conecta o vértice B
ao vértice A.
Os grafos direcionados (também chamados de dígrafos) são aqueles cujas arestas
possuem uma direção. Essa direção indica a direção da relação representada pela aresta.
Na representação gráfica do dígrafo, as arestas são representadas como setas que
indicam uma ou duas direções, ao invés de linhas.

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416

Os grafos valorados, ou grafos ponderados, são aqueles em que cada aresta possui um
peso ou custo associado a ela. São usados para representar alguma característica escalar
do relacionamento entre seus vértices. Os pesos podem ser números inteiros ou reais.

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 23 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Os pesos podem servir como indicadores de custo ou medida de ênfase de uma


determinada relação.
Um grafo é nulo quando não possui arestas ou vértices. Ele é um grafo vazio, ou grafo
nulo, inútil para qualquer propósito prático.

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416

Um grafo é dito ser completo quando todos os seus possíveis pares de vértices estão
conectados por uma aresta. Isso significa que, para qualquer par de vértices, existe uma
aresta direta entre eles. O grafo completo é geralmente representado por um círculo, que
representa todos os vértices e arestas entre eles.

Fonte: https://medium.com/programadores-ajudando-programadores/os-grafos-e-os-algoritmos-697c1fd4a416

Os grafos são estruturas usadas para representar relações entre dados e pode ser usada
para encontrar soluções para problemas complexos, pois permite o fluxo de informações entre
diferentes componentes de um sistema. Grafos também são usados para visualizar redes
complexas, como redes sociais, transporte público, sistemas de computação distribuídos,
enzimas Oetc.
conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 24 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

1.11. TABELA DE HASH OU TABELA DE DISPERSÃO


Uma tabela de dispersão (também conhecida como tabela de hash) é uma estrutura
de dados que permite armazenar e recuperar dados com base em uma chave. Usa função
de hash para associar chaves (hash) a um valor.
A ideia básica de uma tabela de hash é armazenar os dados em um array, onde cada
posição do array é associada a uma chave única. A chave é usada para calcular um índice
no array, onde o valor correspondente aos dados é armazenado. Isso permite que os dados
sejam acessados e atualizados em tempo constante (ou próximo disso), independentemente
do tamanho dos dados armazenados.
A tabela de hash é mais eficiente do que as estruturas de dados lineares como listas
encadeadas e árvores, uma vez que acessa os dados com um único passo ao invés de vários
passos. Além disso, a tabela de hash não requer ordenação dos dados, pois a chave é usada
diretamente para acessar o valor.
No entanto, as tabelas de hash também têm os seus próprios problemas, como colisões
de hash, que ocorrem quando a função de hash produz o mesmo índice para dois ou mais
valores de entrada diferentes.
A função de hash é uma função matemática que é usada para mapear dados de entrada
de tamanho arbitrário em valores de tamanho fixo (chave). Geralmente seguem algumas
regras básicas. Devem ser determinísticas, ou seja, sempre produzir o mesmo resultado para
a mesma entrada. Além disso, deve ser rápida e fácil de calcular, para minimizar o tempo
de processamento necessário para gerar a chave. Também é importante que produza uma
distribuição uniforme dos valores de saída, de modo que as chaves sejam distribuídas de
forma equilibrada na estrutura de dados.

Fonte:
O conteúdo deste livro eletrônico https://resumos.leic.pt/iaed/hash-tables/
é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 25 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

As colisões de hash ocorrem quando duas chaves diferentes são mapeadas para o
mesmo valor de índice em uma tabela de hash. Essa situação é inevitável em estruturas de
dados baseadas em hash, uma vez que é impossível mapear um número infinito de chaves
para um número finito de valores de índice.
Existem diversas técnicas para lidar com colisões de hash, incluindo:
• Encadeamento separado: Nessa técnica, cada posição da tabela de hash contém
uma lista ligada de valores associados a essa posição. Quando ocorre uma colisão, o
novo valor é adicionado à lista correspondente;
• Endereçamento aberto: Nessa técnica, quando ocorre uma colisão, uma sequência
de posições na tabela de hash é examinada em busca de uma posição vazia, onde
o novo valor pode ser armazenado. Existem diferentes maneiras de escolher a
sequência de posições, como o método linear, onde as posições são examinadas
uma a uma, ou o método quadrático, onde as posições são examinadas com base
em uma sequência quadrática;
• Hashing duplo: Nessa técnica, é usada uma segunda função de hash para gerar um
novo índice quando ocorre uma colisão. Essa função de hash pode ser projetada para
evitar colisões com a primeira função de hash.

1.12. ALGORITMOS DE BUSCA SEQUENCIAL E BUSCA BINÁRIA


A busca sequencial e a busca binária são dois algoritmos comuns de busca em estruturas
de dados, como arrays e listas.
A busca sequencial é um algoritmo simples e eficiente para encontrar um elemento
em uma estrutura de dados. A ideia básica é percorrer a estrutura de dados linearmente,
comparando cada elemento com o valor buscado. Se o elemento for encontrado, a busca
é interrompida e a posição do elemento é retornada. Se o elemento não for encontrado, a
busca termina e é retornado um valor indicando que o elemento não existe na estrutura
de dados. A complexidade da busca sequencial é O(n), onde n é o número de elementos na
estrutura de dados.
A busca binária é um algoritmo mais eficiente para encontrar um elemento em uma
estrutura de dados ordenada. A ideia básica é dividir a estrutura de dados pela metade a
cada iteração, descartando a metade que não contém o elemento buscado. Isso é possível
porque a estrutura de dados é ordenada, o que permite determinar se o elemento buscado
está na metade esquerda ou na metade direita da estrutura. A complexidade da busca
binária é O(log n), onde n é o número de elementos na estrutura de dados.
A busca binária é muito mais rápida do que a busca sequencial para estruturas de
dados grandes, pois o número de iterações necessárias para encontrar o elemento é muito
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 26 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

menor. A busca binária requer que a estrutura de dados seja ordenada, o que pode exigir
uma etapa adicional de ordenação. Além disso, a busca binária só é eficiente para estruturas
de dados estáticas, pois requer acesso aleatório aos elementos, o que não é possível em
estruturas de dados dinâmicas, como listas encadeadas.
A busca sequencial é um algoritmo simples e eficiente que pode ser usado em estruturas
de dados pequenas, não ordenadas, para encontrar valores específicos em posições
específicas ou em estruturas de dados dinâmicas.
A busca binária é um algoritmo de busca eficiente usado em estruturas de dados
grandes e ordenadas, como arrays, listas, árvores binárias de busca e outras estruturas
que permitem acesso aleatório aos elementos. Ao dividir a estrutura de dados pela metade
a cada iteração, a busca binária reduz o número de elementos a serem examinados em
cada etapa, tornando a busca mais rápida. É adequada para conjuntos de dados estáticos
e pode ser usada para encontrar elementos específicos, como o elemento de maior ou
menor valor ou o elemento na posição k.
Observe um exemplo de busca sequencial:

Fonte: https://pt.slideshare.net/leinylson/pesquisa-e-ordenao-aula-12-pesquisa-de-dados-sequencial-e-binria

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 27 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Observe um exemplo de busca binária:

Fonte: https://pt.slideshare.net/leinylson/pesquisa-e-ordenao-aula-12-pesquisa-de-dados-sequencial-e-binria

1.13. ALGORITMOS DE ORDENAÇÃO


Os algoritmos de ordenação são métodos que permitem ordenar um conjunto de
elementos em uma ordem específica, como a ordem crescente ou decrescente.
O algoritmo bubble sort é um método simples de ordenação que funciona comparando
elementos adjacentes em uma lista e trocando-os de posição, caso estejam na ordem
errada. Esse processo é repetido até que não haja mais trocas a serem feitas, ou seja, até
que a lista esteja ordenada.
O nome “bubble” (bolha, em inglês) se refere ao comportamento dos elementos ao
longo do processo de ordenação, onde os elementos maiores “borbulham” para o final da
lista. O algoritmo funciona da seguinte forma:
• Percorra a lista a ser ordenada comparando cada par de elementos adjacentes;
• Se os elementos estiverem na ordem errada, troque-os de posição;
• Repita o passo 1 até que não haja mais trocas a serem feitas.

O bubble sort é considerado um algoritmo simples e fácil de entender, mas é muito


ineficiente para listas grandes, já que seu desempenho é O(n²). Isso significa que o tempo
necessário para ordenar a lista cresce exponencialmente com o número de elementos na lista.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 28 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://technologystrive.com/bubble-sort/

O insertion sort é um algoritmo de ordenação simples e eficiente que percorre a lista


de itens a serem ordenados um a um, inserindo cada item em sua posição correta na lista
já ordenada. O algoritmo funciona da seguinte maneira:
• A lista é dividida em duas partes: a primeira parte contém os elementos já ordenados
e a segunda parte contém os elementos ainda não ordenados;
• O algoritmo percorre a lista a partir do segundo elemento e compara cada elemento
com os elementos já ordenados na primeira parte da lista;
• Se o elemento for menor do que o elemento atual na lista ordenada, o algoritmo o
move para a posição correta, empurrando o elemento atual e todos os elementos
maiores uma posição para a direita;
• Esse processo é repetido para cada elemento não ordenado na lista até que todos
os elementos estejam na posição correta na lista ordenada.
O insertion sort é um algoritmo eficiente para listas pequenas ou quase ordenadas,
mas pode se tornar menos eficiente em listas grandes ou desordenadas. Sua complexidade
de tempo médio é O(n²), o que significa que o tempo de execução do algoritmo aumenta
exponencialmente à medida que o tamanho da lista aumenta.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 29 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://runestone.academy/ns/books/published/pythonds/SortSearch/TheInsertionSort.html

O selection sort é um algoritmo de ordenação que funciona encontrando o menor


elemento em cada iteração e colocando-o na posição correta no vetor. A cada iteração, o
menor elemento é selecionado e trocado com o elemento da posição atual.
O algoritmo funciona percorrendo todo o vetor a ser ordenado e encontrando o menor
elemento. Em seguida, ele o coloca na primeira posição do vetor. Na segunda iteração,
ele percorre todo o vetor a partir da segunda posição e encontra o menor elemento. Esse
elemento é então colocado na segunda posição do vetor, e assim por diante, até que todo
o vetor esteja ordenado.
O selection sort tem complexidade de tempo O(n²), pois precisa percorrer todo o vetor
várias vezes para encontrar o menor elemento. Apesar de ter um desempenho inferior a outros
algoritmos de ordenação como o merge sort e o quick sort, ele é simples de implementar e
pode ser útil para pequenas quantidades de dados ou quando a implementação é limitada
por recursos computacionais.
Uma das desvantagens do selection sort é que ele não é estável, ou seja, elementos
com o mesmo valor podem ser reordenados durante o processo de ordenação. Além disso,
ele sempre faz o mesmo número de comparações e trocas, independentemente da ordem
inicial do vetor.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 30 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Fonte: https://technologystrive.com/selection-sort/

O merge sort é um algoritmo de ordenação do tipo divide and conquer (dividir e


conquistar). O algoritmo divide a lista em duas metades e, recursivamente, ordena cada
metade separadamente. Em seguida, combina as duas metades ordenadas em uma única
lista ordenada.
O processo de divisão começa com a lista original e é dividido em duas metades. Em
seguida, cada uma dessas metades é dividida novamente em duas metades, e assim por
diante, até que cada sublista contenha apenas um elemento. A partir daí, o algoritmo
começa a combinar as sublistas ordenadas em listas maiores, em ordem crescente.
A etapa de combinação começa com duas sublistas ordenadas, comparando o primeiro
elemento de cada lista e colocando o menor na lista resultante. O processo continua até
que todos os elementos sejam adicionados à lista resultante.
O merge sort tem um tempo de execução de O(n log n), tornando-o um dos algoritmos
mais rápidos para classificar grandes conjuntos de dados. No entanto, ele requer espaço
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 31 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

adicional para armazenar as sublistas, o que pode ser um problema para conjuntos de
dados muito grandes.

Fonte: https://www.dotnetlovers.com/article/128/implementation-and-analysis-of-merge-sort

O quick sort é um algoritmo de ordenação baseado em divide and conquer (dividir e


conquistar). Esse algoritmo tem um desempenho médio muito bom, com uma complexidade
de tempo de O(n log n) em média e O(n²) no pior caso. O algoritmo quick sort funciona
da seguinte maneira:
• Escolha um elemento da lista para ser o pivô;
• Reorganize a lista de forma que todos os elementos menores que o pivô fiquem à sua
esquerda e todos os elementos maiores que o pivô fiquem à sua direita;
• Repita os passos 1 e 2 para as duas sublistas formadas a partir do pivô;
• Junte as sublistas resultantes.
O pivô é escolhido de maneira que ele divida a lista em duas partes, e é importante
escolher um pivô que seja representativo da lista, a fim de obter o melhor desempenho
possível. Uma abordagem comum é escolher o elemento do meio da lista como pivô,
mas existem outras maneiras de escolher o pivô, como selecionar o primeiro ou o último
elemento da lista.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 32 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Durante a etapa de reorganização, os elementos são comparados com o pivô e movidos


para a esquerda ou direita, conforme sua relação com o pivô. Esse processo é repetido até
que todos os elementos estejam nas posições corretas.
O quick sort é um algoritmo muito eficiente para ordenação de grandes conjuntos de
dados, mas é preciso ter cuidado com a escolha do pivô, para evitar que o algoritmo caia
no pior caso e tenha desempenho muito ruim. Além disso, o quick sort não é um algoritmo
estável, o que significa que a ordem relativa de elementos iguais pode ser alterada durante
o processo de ordenação.

Fonte: https://trabalhosparaescola.com.br/visao-geral-do-quicksort/

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 33 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

RESUMO
Nessa aula, você deve fixar os seguintes pontos:
1) As estruturas de dados são formas de organizar e armazenar dados na memória
do computador para facilitar o acesso e manipulação desses dados. Os algoritmos são
sequências de instruções bem definidas e organizadas para executar uma tarefa específica,
como ordenar uma lista ou buscar um elemento em uma estrutura de dados;
2) Existem diversas estruturas de dados, como listas, pilhas, filas, árvores, grafos,
tabelas de hash, entre outras;
3) Existem diversos algoritmos para realizar diferentes tarefas, como ordenação, busca,
processamento de dados, entre outros;
4) Filas, pilhas e listas são estruturas de dados lineares que armazenam elementos em
uma ordem específica;
5) Uma fila é uma estrutura de dados onde o primeiro elemento a ser adicionado é o
primeiro a ser removido (FIFO - First In, First Out). As operações mais comuns em uma
fila são a inserção de um elemento no final e a remoção de um elemento no início. As filas
podem ser implementadas usando arrays ou listas encadeadas;
6) Uma pilha é uma estrutura de dados onde o último elemento a ser adicionado é o
primeiro a ser removido (LIFO - Last In, First Out). As operações mais comuns em uma pilha
são a inserção de um elemento no topo da pilha e a remoção de um elemento do topo da
pilha. As pilhas também podem ser implementadas usando arrays ou listas encadeadas;
7) As listas são estruturas de dados que permitem a inserção e remoção de elementos
em qualquer posição da lista. As operações mais comuns em uma lista são a inserção de um
elemento em uma posição específica, a remoção de um elemento de uma posição específica
e a busca por um elemento específico na lista. As listas podem ser implementadas usando
listas encadeadas ou arrays;
8) Árvores e grafos são estruturas de dados não lineares;
9) As árvores são estruturas hierárquicas que consistem em nós conectados por arestas.
Cada nó possui um valor e zero ou mais filhos, que são outros nós que estão imediatamente
abaixo dele na hierarquia. Existem muitos tipos de árvores, como árvores binárias, árvores
de busca binária, árvores AVL e árvores B, entre outras;
10) Os grafos são estruturas de dados que permitem representar relacionamentos
entre objetos. Eles consistem em um conjunto de vértices (também chamados de nós) e
um conjunto de arestas que conectam esses vértices. Os grafos podem ser direcionados
ou não-direcionados, ponderados ou não-ponderados, e podem ter ciclos ou não. Existem
muitos algoritmos e técnicas para manipular grafos, como busca em largura, busca em
profundidade e algoritmos de caminho mínimo;

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 34 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

11) As tabelas de hash, ou hash tables, são estruturas de dados que permitem mapear
chaves para valores de maneira eficiente. Elas consistem em uma matriz de elementos, onde
cada elemento é uma lista encadeada de pares chave-valor. A chave é passada por uma
função de hash para gerar um índice na matriz, onde o par chave-valor correspondente é
armazenado. As tabelas de hash são usadas para implementar mapas, conjuntos e outras
estruturas de dados;
12) A busca sequencial e a busca binária são algoritmos de busca que buscam por um
elemento em uma estrutura de dados. A busca sequencial percorre a estrutura de dados do
início ao fim, comparando cada elemento com o elemento procurado, até encontrá-lo ou
chegar ao fim da estrutura. A busca binária, por outro lado, só é aplicável em estruturas de
dados ordenadas e aproveita essa ordem para reduzir o número de comparações necessárias.
O algoritmo divide a estrutura de dados pela metade a cada iteração e verifica se o elemento
procurado está na primeira ou segunda metade, eliminando a outra metade da busca.
A busca binária é mais rápida que a busca sequencial em estruturas de dados grandes e
ordenadas, mas é menos eficiente em estruturas de dados não ordenadas ou dinâmicas;
13) Os algoritmos de ordenação são utilizados para organizar dados em uma determinada
ordem, de acordo com algum critério. Os principais algoritmos de ordenação:
• Bubble Sort: É um algoritmo simples que percorre o vetor diversas vezes, comparando
cada elemento com o próximo e trocando-os se estiverem fora de ordem. Possui
baixo desempenho em grandes conjuntos de dados;
• Insertion Sort: É um algoritmo que percorre o vetor e, a cada elemento, o insere em
sua posição correta, em relação aos elementos anteriores. É eficiente para pequenos
conjuntos de dados;
• Selection Sort: É um algoritmo que percorre o vetor diversas vezes, buscando o menor
elemento e o colocando na primeira posição, repetindo esse processo para cada
elemento subsequente. Possui baixo desempenho em grandes conjuntos de dados;
• Merge Sort: É um algoritmo que divide o vetor em subconjuntos menores e ordenados,
para depois mesclá-los em um único vetor ordenado. É eficiente para grandes conjuntos
de dados;
• Quick Sort: É um algoritmo que escolhe um elemento como pivô e separa o vetor em
duas partições, uma com elementos menores e outra com elementos maiores que
o pivô. Esse processo é repetido recursivamente para cada partição, até que todo o
vetor esteja ordenado. É eficiente para grandes conjuntos de dados.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 35 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

QUESTÕES DE CONCURSO

001. (CESPE-CEBRASPE/PO-AL/PERITO CRIMINAL - ESPECIALIDADE: ANÁLISE DE


SISTEMAS/2023) Julgue o próximo item, a respeito de tipos de dados elementares e
estruturados.
Em uma estrutura de dados tipo lista, o elemento eliminado do conjunto é o mais recentemente
inserido. A lista implementa uma política em que o último a entrar é o primeiro a sair.

002. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item seguinte a respeito
dos conceitos de algoritmo de ordenação.
O algoritmo merge sort ordena os elementos de um vetor percorrendo este diversas vezes
e, a cada passagem, deslocando até o topo o maior elemento da sequência.

003. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Sempre que houver uma remoção na estrutura de dados denominada fila, o elemento
removido será aquele que está na estrutura há mais tempo.

004. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Sempre que houver uma remoção na estrutura de dados denominada fila, o elemento
removido será aquele que está na estrutura há mais tempo.

005. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Uma árvore binária deve ter, no mínimo, 3 nós.

006. (CESPE-CEBRASPE/BNB/ANALISTA DE SISTEMAS - DESENVOLVIMENTO DE SISTEMAS/2022)


Julgue o próximo item, relativo aos conceitos de estrutura de dados.
Os elementos de uma fila poderão ser retirados somente na ordem inversa em que foram
inseridos, ou seja, respeitando-se o conceito last in, first out.

007. (FGV/SEAD-AP/PERITO CRIMINAL - CIÊNCIA DA COMPUTAÇÃO - ANALISTA DE


SISTEMA/2022) Árvores B são frequentemente utilizadas para indexação de bancos de
dados. Nesse contexto,
O conteúdo deste livro analise
eletrônico éas afirmativas
licenciado para Foco a- ,seguir sobre
vedada, por esse
quaisquer tipo
meios e ade estrutura
qualquer título, de dados.
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 36 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

I – São balanceadas.
II – Os nós podem ter mais de dois filhos.
III – A altura da árvore é O(lg(N)).
Está correto o que se afirma em
a) I, apenas.
b) I e II, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.

008. (FCC/TRT - 14ª REGIÃO (RO E AC)/ANALISTA JUDICIÁRIO - TECNOLOGIA DA


INFORMAÇÃO/2022) As estruturas de dados são usadas para armazenar dados de uma
forma organizada. Sobre elas, é correto afirmar que
a) as filas usam a lógica FIFO, um acrônimo para “First Information, First Operation”.
b) uma operação append (enfileirar) insere um elemento ao final da fila.
c) uma operação enqueue (empilhar) insere um elemento no topo da pilha.
d) as pilhas usam a lógica LIFO, um acrônimo para “Last In, First Out”
e) em uma linked list, há um ponteiro head, que aponta para o último elemento da lista.

009. (FEPESE/UDESC/ANALISTA DE SISTEMAS/2022) Observe a figura abaixo que apresenta


uma árvore.

Assinale a alternativa que apresenta sequência decorrente do percurso pré-ordem (pre-


order) dessa árvore binária.
a) 90,70,66,50,35,44,31,25,24,22,1815,12,4,10
b) 4,10,12,15,18,22,24,25,31,35,44,50,66,70,90
c) 4,12,10,18,22,24,15,31,44,35,66,90,70,50,25
d) 4,12,18,24,31,44,66,90,10,22,35,70,15,50,25
e) 25,15,10,4,12,22,18,24,50,35,31,44,70,66,90
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 37 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

010. (IBFC/PREFEITURA DE DOURADOS – MS/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO/2022)


Um tipo de algoritmo muito usado na resolução de problemas computacionais são os
algoritmos de ordenação. Assinale a única alternativa que esteja tecnicamente incorreta
quanto a especificar exatamente algoritmos de ordenação simples.
a) Quick Sort
b) Smart Sort
c) Insertion Sort
d) Bubble Sort

011. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Quanto aos conceitos


de árvore binária, assinale a alternativa correta.
a) Operações que utilizam recursão não podem ser realizadas sobre árvores binárias.
b) A árvore pode ser vazia, isto é, não ter nenhum elemento.
c) Uma árvore estritamente binária com n folhas tem 2n2 - 1 nós.
d) A altura de um nó é o comprimento do menor caminho do nó até o seu primeiro descendente.
e) Uma árvore binária completa possui, no máximo, oito nós.

012. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Nas estruturas


conhecidas como árvores, o nó do topo da árvore, do qual descendem os demais nós,
denomina-se nó
a) interior.
b) terminal.
c) raiz.
d) exterior.
e) filho.

013. (IBFC/DPE-MT/ANALISTA - ANALISTA DE SISTEMAS/2022) Assinale a alternativa que


apresenta a relação entre as duas estruturas de dados da coluna da esquerda com as
respectivas características técnicas da coluna da direita.
(1) PILHA
(2) FILA
a) O elemento inserido por primeiro é o primeiro elemento a sair da lista.
b) O elemento inserido por último é o primeiro elemento a sair da lista.
c) Precisa-se de apenas um ponteiro para acessar a lista.
d) Precisa-se de dois ponteiros para acessar a lista.
Assinale a alternativa correta.
a) 1BC - 2AD
b) 1AD - 2BC
c) 1BD - 2AC
d) 1AC - 2BD
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 38 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

014. (FGV/SEFAZ-AM/TÉCNICO DA FAZENDA ESTADUAL – TARDE/2022) A estrutura de dados


usada em índices multiníveis dinâmicos em banco de dados relacionais, que garantem que
tais estruturas sempre estejam balanceadas e que o espaço desperdiçado pela exclusão
de itens de dados, se houver, nunca se torne excessivo, é denominada
a) fila.
b) hash.
c) bitmap.
d) árvore B.
e) árvore binária.

015. (CESPE-CEBRASPE/BANRISUL/ANALISTA DE SEGURANÇA DA TECNOLOGIA DA


INFORMAÇÃO/2022) A respeito de algoritmos de hash, julgue o item que se segue.
A ferramenta mais utilizada para reduzir a probabilidade de acontecerem colisões em uma
função de resumo (hash) é o ajuste de distribuição, de maneira que, quanto mais heterogênea
e dispersa for a função resumo, menor será a sua probabilidade de colisão.

016. (CESPE-CEBRASPE/BANRISUL/ANALISTA DE SEGURANÇA DA TECNOLOGIA DA


INFORMAÇÃO/2022) A respeito de algoritmos de hash, julgue o item que se segue.
Hash é o resultado único e de tamanho fixo de um método criptográfico aplicado sobre
uma informação, conhecido como função de resumo.

017. (UFMT/CÂMARA DE CÁCERES – MT/TÉCNICO EM INFORMÁTICA/2022) Em programação,


os dados são organizados, gerenciados e armazenados em diferentes formas, concebendo
diferentes estruturas de dados. Com base em estruturas de dados convencionais, assinale
a afirmativa correta.
a) Qualquer árvore binária de busca de nós será balanceada.
b) Na lista duplamente encadeada de nós, cada nó possui duas ligações: uma para a cabeça
da lista e outra para o próximo nó.
c) Na lista duplamente encadeada de nós, cada nó possui duas ligações: uma para o nó
anterior e outra para o próximo nó.
d) Qualquer árvore binária de nós será uma árvore binária de busca.

018. (CESPE-CEBRASPE/BNB/ANALISTA DE SISTEMAS - DESENVOLVIMENTO DE SISTEMAS/2022)


No que se refere aos conceitos de ordenamento, julgue o seguinte item.
A complexidade de tempo do algoritmo bubble sort é do tipo O(n × logn), logo, no caso desse
algoritmo, o tempo de execução aumenta exponencialmente com o acréscimo do valor de n.

019. (FEPESE/UDESC/ANALISTA DE SISTEMAS/2022) Assinale a alternativa correta com


relação à estrutura de arquivos.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 39 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) Uma árvore é considerada balanceada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de no máximo uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
b) Uma árvore é considerada desbalanceada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de, no máximo, uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
c) Uma árvore é considerada degenerada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de, no máximo, uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
d) Uma árvore AVL é uma árvore na qual as alturas das subárvores esquerda e direita de
cada nó diferem no mínimo por uma unidade.
e) Na inserção em uma árvore AVL utiliza-se um processo de balanceamento que pode ser
de 2 tipos gerais: Rotação simples ou Rotação complexa.

020. (QUADRIX/PRODAM-AM/ANALISTA DE TI - ANALISTA DE TELECOMUNICAÇÕES/2022) Pelo


fato de a fila ser uma coleção dinâmica, algumas operações podem aumentar ou diminuir
o seu tamanho. A operação que permite aumentar o seu tamanho é
a) desenfileira.
b) enfileira.
c) iniciaf.
d) vaziaf.
e) cheiaf.

021. (FGV/TCE-TO/AUDITOR DE CONTROLE EXTERNO - TECNOLOGIA DA INFORMAÇÃO/2021) As


funções de hash são comumente empregadas nos mecanismos de segurança da informação.
Quanto às suas propriedades básicas, para que o algoritmo de hash seja considerado forte,
é correto afirmar que:
a) a mesma entrada deve produzir saídas diferentes.
b) deve ser difícil encontrar duas entradas que produzam o mesmo hash.
c) deve ser possível produzir a entrada original a partir do hash resultante.
d) pequenas mudanças na entrada devem produzir pequenas mudanças no hash resultante.
e) mesmo que as entradas possuam o mesmo tamanho, os resultados de hash terão
tamanhos diferentes.

022. (QUADRIX/PRODAM-AM/ANALISTA DE TI - ANALISTA DE DESENVOLVIMENTO DE


SISTEMAS/2022) Assinale a alternativa que apresenta a estrutura que é muito útil para a
implementação de algoritmos que necessitam de estruturas hierárquicas, sendo caracterizada
como uma estrutura de dados bidimensional, não linear, com propriedades especiais.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 40 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) lista
b) fila
c) pilha
d) árvore
e) lista encadeada

023. (QUADRIX/SEDF/PROFESSOR DE EDUCAÇÃO BÁSICA – INFORMÁTICA/2022) Acerca dos


aspectos das linguagens de programação e das estruturas de dados e da programação
orientada a objetos (POO), julgue o item.
Em uma árvore binária, todos os nós de uma subárvore direita são maiores que o nó raiz.

024. (IBFC/AFEAM/ESPECIALISTA DE FOMENTO - DESENVOLVIMENTO DE SISTEMAS/2022)


Assinale, das alternativas abaixo, a única que identifica respectivamente uma Estrutura
de Dados do tipo FIFO (First In, First Out) e uma outra com a Estrutura de dados do tipo
LIFO (Last In, First Out):
a) lista - vetor
b) pilha - fila
c) vetor - lista
d) fila - pilha

025. (IBFC/AFEAM/ESPECIALISTA DE FOMENTO - DESENVOLVIMENTO DE SISTEMAS/2022)


A respeito das estruturas de dados e algoritmos amplamente utilizados na execução de
operações de busca e indexação, analise as afirmativas abaixo e marque alternativa correta.
I – Busca sequencial é a mais elementar de todas as buscas. Considerando a busca em uma
estrutura de dados com informações ordenadas, a busca sequencial será sempre menos
eficiente do que a busca binária, no pior caso. A busca binária se beneficia do fato da
estrutura de dados estar ordenada, isso facilita sua estratégia de busca.
II – As funções hash são usadas para mapearmos grandes conteúdos de informações que,
mesmo tendo tamanho variável, retornaram como resultado informações de pequeno porte
e de tamanho fixo. Tratam-se de funções probabilísticas, ou seja, devem resultar sempre
no mesmo valor toda vez que receberem um mesmo dado como entrada.
III – Árvores AVL possuem como uma de suas características O fato de serem balanceada.
Isso significa que a altura sub árvore esquerda de qualquer nó tem a mesma altura da sua
sub árvore direita.
a) Apenas as afirmativas I e II estão corretas.
b) Apenas a afirmativa I está correta.
c) Apenas a afirmativa III está correta.
d) Apenas as afirmativas II e III estão corretas.
e) Todas as afirmativas estão corretas.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 41 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

026. (FEPESE/UDESC/ANALISTA DE SISTEMAS) Analise as afirmativas abaixo com relação


ao assunto Árvore-B.
1. Uma Árvore-B de ordem m é uma árvore m-direcional tal que todas as folhas estão no
mesmo nível.
2. Uma Árvore-B de ordem m é uma árvore m-direcional tal que todos os nós internos, com
exceção da raiz, estão restritos a terem no máximo 2 filhos não vazios.
3. Uma Árvore-B de ordem m é uma árvore m-direcional tal que a raiz deve ter pelo menos
m filhos não vazios.
Assinale a alternativa que indica todas as afirmativas corretas.
a) É correta apenas a afirmativa 1.
b) É correta apenas a afirmativa 2.
c) São corretas apenas as afirmativas 1 e 2.
d) São corretas apenas as afirmativas 1 e 3.
e) São corretas apenas as afirmativas 2 e 3.

027. (FGV/TJ-RO/ANALISTA JUDICIÁRIO - ANALISTA DE SISTEMA - DESENVOLVIMENTO DE


SISTEMA/2021) Considere a lista duplamente encadeada exibida a seguir.
(1, 3, 0, “Verde”)
(2, 4, 3, “Azul”)
(3, 2, 1, “Amarelo”)
(4, 0, 2, “Vermelho”)
Cada elemento pertencente à lista é representado por uma quádrupla, com o seguinte
formato:
(<id>, <id do anterior>, <id do seguinte>, <conteúdo>).
A ordem do conteúdo dos componentes, segundo a instância da lista apresentada, é:
a) Amarelo, Verde, Azul, Vermelho.
b) Azul, Verde, Vermelho, Amarelo.
c) Verde, Vermelho, Amarelo, Azul.
d) Vermelho, Amarelo, Azul, Verde.
e) Vermelho, Azul, Amarelo, Verde.

028. (CESGRANRIO/BANCO DO BRASIL/AGENTE DE TECNOLOGIA/2021) Desejam-se realizar


buscas nas seguintes coleções de dados, representadas na linguagem Java:
I – Um array de 1.000 números inteiros ordenados de forma decrescente.
II – Uma lista encadeada desordenada e alocada dinamicamente, cujos 1.000 nós contêm
strings (uma string por nó).
III – Uma lista encadeada, alocada dinamicamente, cujos 1.000 nós contêm números decimais
(um número double por nó) ordenados de forma ascendente.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 42 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Levando-se em consideração a exequibilidade e a eficiência, quais métodos de busca devem


ser empregados, respectivamente, em cada um dos três casos acima?
a) I – sequencial; II – sequencial; III – binária;
b) I – binária; II – sequencial; III – sequencial;
c) I – binária; II – sequencial; III – binária;
d) I – sequencial; II – sequencial; III – sequencial;
e) I – sequencial; II – binária; III – binária;

029. (CESPE-CEBRASPE/SEED-PR/PROFESSOR - EDUCAÇÃO BÁSICA E JORNADA/2021) Na


estrutura de dados denominada FILA,
a) o último elemento a ser inserido será o primeiro a ser retirado.
b) o primeiro elemento a ser inserido será o primeiro a ser retirado: adiciona-se item no
fim e remove-se item do início.
c) os elementos de um mesmo tipo de dado estão organizados de maneira sequencial e
ordenada.
d) os elementos não estão necessariamente armazenados sequencialmente na memória
por ordem descrente de valores.
e) os elementos são formados de índices em duas dimensões: linhas e colunas.

030. (CESPE-CEBRASPE/SEED-PR/PROFESSOR - EDUCAÇÃO BÁSICA E JORNADA/2021) Em


determinada estrutura de dados, os valores seguem a regra segundo a qual o último a
entrar é o primeiro a sair.
Essa estrutura é do tipo
a) pilha.
b) fila.
c) lista encadeada.
d) lista duplamente encadeada.
e) matriz.

031. (VUNESP/FITO/TÉCNICO EM GESTÃO – INFORMÁTICA/2020) Considere uma estrutura


de dados que consiste em um conjunto finito de nós e arestas interligando os nós.
Assinale a alternativa que apresenta uma estrutura de dados que corresponde a essa
definição.
a) Fila.
b) Grafo.
c) Pilha.
d) Tabela.
e) Vetor.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 43 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

032. (VUNESP/SEMAE DE PIRACICABA – SP/PROGRAMADOR JUNIOR/2021) Considere uma


estrutura de dados T como sendo uma árvore binária do tipo AVL. Como característica,
essa estrutura de dados é uma árvore binária
a) balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores (esquerda
e direita) diferem de até uma unidade.
b) balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores (esquerda
e direita) são sempre idênticas.
c) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) diferem de até uma unidade.
d) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) são sempre idênticas.
e) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) diferem exatamente de uma unidade.

033. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Assinale a alternativa


que apresenta o nome do tipo de estrutura em que cada elemento armazena um ou vários
dados e um ponteiro para o próximo elemento, que permite o encadeamento e mantém a
estrutura linear, sendo que, nesse tipo de estrutura, são abordadas as seguintes operações:
inserir no início da lista; inserir no fim; consultar toda a lista; remover um elemento qualquer
dela; e esvaziá-la.
a) lista simplesmente encadeada e não ordenada.
b) lista simplesmente encadeada e ordenada.
c) lista duplamente encadeada e não ordenada.
d) lista duplamente encadeada e não ordenada.
e) lista triplamente encadeada.

034. (FGV/PREFEITURA DE MANAUS – AM/ANALISTA DE BANCO DE DADOS/2022) Observe a


configuração de uma árvore B, onde uma página pode ter no máximo 4 filhas, contendo as
chaves 7, 10, 15, 18, 20, 22, 26, 30, 35, 40.

Após a inserção da chave 5, a configuração das chaves do nó raiz da árvore seria


a) 5, 20, 30
b) 10, 20, 30
c) 5, 30
d) 10, 30
e) 20, 30O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 44 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

035. (FGV/SEFAZ-AM/AUDITOR FISCAL DE TRIBUTOS ESTADUAIS/2022) A estrutura de dados


usada em índices multiníveis dinâmicos em banco de dados relacionais, que garantem que
tais estruturas sempre estejam balanceadas e que o espaço desperdiçado pela exclusão
de itens de dados, se houver, nunca se torne excessivo, é denominada
a) fila.
b) hash.
c) bitmap.
d) árvore B.
e) árvore binária.

036. (UFMT/POLITEC-MT/PERITO OFICIAL CRIMINAL - PERFIL: CIÊNCIA DA COMPUTAÇÃO


OU INFORMÁTICA/2022) Qual estrutura apresenta complexidade de inserção, remoção e
procura O(log(n)) independentemente se for o melhor ou o pior caso?
a) Pilha
b) Árvore Binária
c) Tabela Hash
d) Fila duplamente encadeada
e) Árvore AVL

037. (CESPE-CEBRASPE/DPE-RO/ANALISTA DA DEFENSORIA PÚBLICA – PROGRAMAÇÃO/2022)


O algoritmo de ordenação que requer uma quantidade constante de O(1) espaço de memória
adicional é o algoritmo de
a) ordenação por seleção.
b) ordenação por mistura.
c) ordenação por inserção.
d) ordenação por flutuação.
e) ordenação heapsort.

038. (CESPE-CEBRASPE/POLITEC – RO/PERITO CRIMINAL - ÁREA 6 (CIÊNCIAS DA COMPUTAÇÃO/


INFORMÁTICA/ANÁLISE DE SISTEMAS)/2022) Assinale a opção em que é apresentada a
sequência correta de números correspondente à varredura da árvore binária representada
a seguir quando esta estiver sendo percorrida em profundidade por meio da utilização da
técnica do tipo pré-ordem.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 45 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) 20, 21, 13, 32, 44, 51, 38, 47, 49, 80, 53, 52, 97
b) 51, 32, 44, 47, 49, 38, 13, 21, 20, 80, 53, 52, 97
c) 51, 32, 13, 21, 20, 44, 38, 47, 49, 80, 53, 52, 97
d) D 97, 80, 53, 52, 51, 32, 44, 38, 47, 49, 13, 21, 20
e) 21, 20, 13, 38, 44, 47, 49, 32, 53, 52, 80, 97, 51

039. (FGV/TJ-DFT/ANALISTA JUDICIÁRIO - ANÁLISE DE SISTEMAS/2022) Júlio está


desenvolvendo uma aplicação e precisa implementar um mecanismo de desfazer/refazer
de um editor de texto utilizando o algoritmo LIFO (Last In, First Out).
Para implementar o algoritmo LIFO, Júlio deve usar a estrutura de dados:
a) fila.
b) pilha.
c) árvore.
d) nó folha.
e) tabela hash.

040. (FUNDATEC/PREFEITURA DE FLORES DA CUNHA – RS/TÉCNICO EM INFORMÁTICA/2022)


Assinale a estrutura de dados caracterizada por um conjunto de dados dispostos por uma
sequência de nós, onde cada nó também armazena um ponteiro que indica a posição do
próximo elemento.
a) Fila.
b) Pilha.
c) Lista encadeada.
d) Árvore balanceada.
e) Vetor.

041. (IBADE/SEA-SC/ANALISTA DE INFORMÁTICA/2022) Sistemas operacionais como o Linux,


e linguagens como Python, dispõem de rotinas de classificação (sort). Dentre os algoritmos
dessas rotinas há um método que percorre um vetor de elementos da esquerda para a
direita e, à medida que avança, vai ordenando os elementos à esquerda. Consiste em cada
passo, a partir do segundo elemento, selecionar o próximo item da sequência e colocá-lo
no local apropriado
O conteúdo deste de
livro acordo
eletrônico écom o critério
licenciado para Foco -de ordenação.
, vedada, Esse
por quaisquer meiosmétodo
e a qualquerétítulo,
chamado:
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 46 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) selection sort.
b) bubble sort.
c) inserction sort.
d) quick sort.
e) merge sort.

042. (UFAM/UFAM/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2022) Sobre o Método de


Ordenação Merge Sort, é CORRETO afirmar que:
a) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação por inserção.
b) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação por seleção.
c) o Merge Sort, ou Ordenação por Mistura, é mais eficiente que o Método da Bolha (Bubble
Sort) apenas nos casos em que há poucos dados a serem ordenados.
d) o Merge Sort é mais eficiente que o Método da Bolha (Bubble Sort) em todos os casos.
e) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação que usa a estratégia
dividir-para-conquistar.

043. (IBADE/SES-MG/T01 - ÁREA DE TI – TARDE/2022) O algoritmo de ordenação decrescente


onde cada entidade é comparada com o seu posterior e, se maior, invertidas as posições
sucessivamente, até que a coleção esteja ordenada, é chamado:
a) selection sort.
b) digital sort.
c) bubble sort.
d) quick sort.
e) random sort.

044. (FGV/MPE-GO/ANALISTA EM INFORMÁTICA/2022) Árvores B são muito usadas na


implementação de índices em bancos de dados.
Uma árvore desse tipo é dita balanceada quando
a) a complexidade do algoritmo de busca é logarítmica.
b) as chaves são armazenadas em ordem de classificação, crescente ou decrescente.
c) é possível localizar registros referenciados por um intervalo de chaves.
d) o número de ponteiros em cada nó intermediário é constante.
e) toda página folha tem o mesmo número de páginas intermediárias até a raiz.

045. (QUADRIX/CRMV-MS/TÉCNICO EM INFORMÁTICA/2022) Julgue o item, relativos aos


conceitos de programação e às estruturas de dados.
Em uma árvore, o conjunto de um ou mais nós é finito e hierarquicamente subordinado
a outro.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 47 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

046. (FGV/PC-AM/PERITO CRIMINAL - 4ª CLASSE - PROCESSAMENTO DE DADOS/2022)


Assinale as operações características de uma estrutura de dados do tipo pilha (stack).
a) IMPORT, EXPORT.
b) INPUT, OUPUT.
c) INSERT, REMOVE.
d) PUSH, POP
e) READ, READLN.

047. (CESPE-CEBRASPE/PETROBRAS/ANALISTA DE SISTEMAS – ENGENHARIA DE


SOFTWARE/2022) Julgue o item subsequente, a respeito de algoritmos para ordenação e
pesquisa e de programação recursiva.
A ordenação por seleção, ou Selection sort, requer apenas uma quantidade constante O
(1) de espaço de memória adicional.

048. (CESPE-CEBRASPE/DPE-RO/TÉCNICO EM INFORMÁTICA/2022) Em um sistema


operacional, a estrutura de dados utilizada para organizar chamadas de funções recursivas
por meio da inserção ou remoção de elementos via operações como push e pop é denominada
a) lista estática.
b) fila.
c) hash.
d) pilha.
e) lista dinâmica.

049. (FAURGS/SES-RS/ANALISTA DE SISTEMAS/2022) Qual é a afirmativa correta sobre


estruturas de dados?
a) Uma pilha armazena os dados em uma estrutura de dados do tipo árvore binária.
b) Listas encadeadas são estruturas que encadeiam os elementos através de um ponteiro
no qual todos os elementos, exceto o último, apontam para o seguinte.
c) Em uma pilha, o primeiro elemento a ser inserido será o primeiro a ser retirado, ou seja,
adicionam-se itens no fim e removem-se do início.
d) Uma fila armazena os dados em uma estrutura de dados do tipo grafo.
e) Em uma fila, o primeiro elemento a ser inserido será o último a ser retirado, ou seja,
adicionam-se e removem-se itens no início.

050. (CESPE-CEBRASPE/DPE-RO/ANALISTA DA DEFENSORIA PÚBLICA – PROGRAMAÇÃO/2022)


Uma árvore binária completa com 15 nós tem altura igual a
a) 1.
b) 2.
c) 3.
d) 4.
e) 5.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 48 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

GABARITO
1. E 37. c
2. E 38. c
3. C 39. b
4. E 40. c
5. E 41. c
6. E 42. e
7. e 43. c
8. d 44. e
9. e 45. C
10. b 46. d
11. b 47. E
12. c 48. d
13. a 49. b
14. d 50. c
15. E
16. C
17. c
18. E
19. a
20. e
21. b
22. d
23. C
24. d
25. b
26. b
27. e
28. c
29. b
30. a
31. b
32. a
33. a
34. b
35. d
36. e
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 49 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

GABARITO COMENTADO

001. (CESPE-CEBRASPE/PO-AL/PERITO CRIMINAL - ESPECIALIDADE: ANÁLISE DE


SISTEMAS/2023) Julgue o próximo item, a respeito de tipos de dados elementares e
estruturados.
Em uma estrutura de dados tipo lista, o elemento eliminado do conjunto é o mais recentemente
inserido. A lista implementa uma política em que o último a entrar é o primeiro a sair.

A descrição menciona uma política de “último a entrar, primeiro a sair”, que é a política de
uma fila, e não de uma lista.
Em uma lista, não há necessariamente uma ordem específica de remoção dos elementos.
Pode-se remover um elemento qualquer, desde o início até o final da lista.
Já em uma fila, os elementos são removidos em ordem estrita de chegada, ou seja, o
primeiro elemento inserido é o primeiro a ser removido.
Errado.

002. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item seguinte a respeito
dos conceitos de algoritmo de ordenação.
O algoritmo merge sort ordena os elementos de um vetor percorrendo este diversas vezes
e, a cada passagem, deslocando até o topo o maior elemento da sequência.

O conceito descrito pelo item diz respeito ao bubble sort, que é considerado o algoritmo
de ordenação mais simples. A ordenação descrita no item está em ordem decrescente, mas
ela também pode ser feita em ordem crescente.
O merge sort é um algoritmo de divisão e conquista. Ele divide o vetor em vetores menores
e faz a classificação de cada um dos subvetores. Depois, ele vai mesclando os arrays até
formar um novo array ordenado.
Errado.

003. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Sempre que houver uma remoção na estrutura de dados denominada fila, o elemento
removido será aquele que está na estrutura há mais tempo.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 50 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Uma estrutura de dados do tipo fila é uma estrutura em que os elementos são inseridos
no fim e removidos no início. Pense em uma fila de banco. No nosso exemplo não existe
fila preferencial.
Vamos supor que Maria tenha chagado ao banco às 10h15min e pegou a senha 3. Joaquim
chega ao banco às 10h45min e pega a senha 8, Maria já está no banco faz 30 minutos.
Pergunta: quem sairá primeiro do banco Maria ou Joaquim? Certamente que Maria saíra
primeiro, pois ela está mais tempo na fila.
Se formos levar isso para um termo mais técnico teremos que o primeiro elemento a entrar
é o primeiro elemento a sair, FIFO.
Certo.

004. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Sempre que houver uma remoção na estrutura de dados denominada fila, o elemento
removido será aquele que está na estrutura há mais tempo.

Uma pilha é uma estrutura de dados em que podemos ter seus elementos ordenados ou
não. Caso a pilha esteja ordenada o mais indicado é uma pesquisa binária, pois este tipo
de busca é utilizado em estruturas ordenadas.
Caso a pilha esteja desordenada, que acontece na maior parte das vezes, o mais indicado
é uma busca sequencial, que é mais indicada para estruturas não ordenadas.
Errado.

005. (CESPE-CEBRASPE/SEPLAN-RR/ANALISTA DE PLANEJAMENTO E ORÇAMENTO -


ESPECIALIDADE: TECNOLOGIA DA INFORMAÇÃO/2023) Julgue o item a seguir acerca dos
conceitos de estrutura de dados.
Uma árvore binária deve ter, no mínimo, 3 nós.

Uma árvore binária é uma estrutura de dados que possui um conjunto finito de elementos
que pode ou estar vazia ou possuir três subconjuntos distintos: raiz, subárvore direita e
subárvore esquerda.
Cada um dos elementos de uma árvore binária pode ser chamado de nó, portanto, o item é
incorreto, pois é possível termos árvores binárias vazias, com nenhum elemento, logo não
há exigência de termos, no mínimo, três nós.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 51 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Uma árvore binária leva este nome pois pode ter, no máximo, dois filhos para cada nó.
Errado.

006. (CESPE-CEBRASPE/BNB/ANALISTA DE SISTEMAS - DESENVOLVIMENTO DE SISTEMAS/2022)


Julgue o próximo item, relativo aos conceitos de estrutura de dados.
Os elementos de uma fila poderão ser retirados somente na ordem inversa em que foram
inseridos, ou seja, respeitando-se o conceito last in, first out.

Nas filas, são executadas as operações FIFO (First in, First Out). A estrutura que utiliza o
Last in, Fisrt out é uma pilha.
Na fila, O elemento inserido por primeiro é o primeiro elemento a sair da lista.
Errado.

007. (FGV/SEAD-AP/PERITO CRIMINAL - CIÊNCIA DA COMPUTAÇÃO - ANALISTA DE


SISTEMA/2022) Árvores B são frequentemente utilizadas para indexação de bancos de
dados. Nesse contexto, analise as afirmativas a seguir sobre esse tipo de estrutura de dados.
I – São balanceadas.
II – Os nós podem ter mais de dois filhos.
III – A altura da árvore é O(lg(N)).
Está correto o que se afirma em
a) I, apenas.
b) I e II, apenas.
c) I e III, apenas.
d) II e III, apenas.
e) I, II e III.

A afirmativa I está CORRETA. As árvores B são balanceadas, o que significa que todas as
folhas estão na mesma altura.
A afirmativa II está CORRETA. É possível ter mais que dois filhos em uma Árvore B de ordem
m, desde que cada filho seja organizado no contexto de uma árvore de busca e todas as
folhas estejam no mesmo nível.
A afirmativa III está CORRETA. A altura da árvore B é diretamente proporcional ao número
de nós na árvore, e é geralmente representada como O(log(N)).
Letra e.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 52 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

008. (FCC/TRT - 14ª REGIÃO (RO E AC)/ANALISTA JUDICIÁRIO - TECNOLOGIA DA


INFORMAÇÃO/2022) As estruturas de dados são usadas para armazenar dados de uma
forma organizada. Sobre elas, é correto afirmar que
a) as filas usam a lógica FIFO, um acrônimo para “First Information, First Operation”.
b) uma operação append (enfileirar) insere um elemento ao final da fila.
c) uma operação enqueue (empilhar) insere um elemento no topo da pilha.
d) as pilhas usam a lógica LIFO, um acrônimo para “Last In, First Out”
e) em uma linked list, há um ponteiro head, que aponta para o último elemento da lista.

a) Errada. As filas usam a lógica FIFO, que significa First In, First Out, ou seja, o primeiro
elemento a entrar é o primeiro a sair.
b) Errada. As operações básicas em uma fila são a inserção de elementos no final da fila
(enqueue) e a remoção do elemento no início da fila (dequeue). É possível também acessar
o elemento no início da fila sem removê-lo (peek ou front), verificar se a fila está vazia
(empty) e limpar todos os elementos da fila (clear)
c) Errada. A opção enqueue é uma operação básica em uma fila.
d) Certa. As pilhas usam a lógica LIFO, um acrônimo para Last In, First Out, ou seja, o último
elemento a entrar é o primeiro a sair.
e) Errada. Em uma linked list (lista ligada), há um ponteiro head, que aponta para o primeiro
elemento da lista.
Letra d.

009. (FEPESE/UDESC/ANALISTA DE SISTEMAS/2022) Observe a figura abaixo que apresenta


uma árvore.

Assinale a alternativa que apresenta sequência decorrente do percurso pré-ordem (pre-


order) dessa árvore binária.
a) 90,70,66,50,35,44,31,25,24,22,1815,12,4,10
b) 4,10,12,15,18,22,24,25,31,35,44,50,66,70,90
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 53 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

c) 4,12,10,18,22,24,15,31,44,35,66,90,70,50,25
d) 4,12,18,24,31,44,66,90,10,22,35,70,15,50,25
e) 25,15,10,4,12,22,18,24,50,35,31,44,70,66,90

A pre-order de uma árvore binária é uma maneira de percorrer a árvore. Neste método, o
nó raiz é visitado primeiro, seguido pelo nó esquerdo, e então pelo nó direito. Isso continua
até que todos os nós da árvore sejam visitados. A pre-order é útil para imprimir todos os
elementos da árvore em sua ordem correta.
Letra e.

010. (IBFC/PREFEITURA DE DOURADOS – MS/ANALISTA DE TECNOLOGIA DA INFORMAÇÃO/2022)


Um tipo de algoritmo muito usado na resolução de problemas computacionais são os
algoritmos de ordenação. Assinale a única alternativa que esteja tecnicamente incorreta
quanto a especificar exatamente algoritmos de ordenação simples.
a) Quick Sort
b) Smart Sort
c) Insertion Sort
d) Bubble Sort

A alternativa tecnicamente incorreta é a letra b, Smart Sort. O Smart Sort é um algoritmo


de classificação que foi criado por Robert Sedgewick em 1978. Ele é um algoritmo de
classificação mais avançado e complexo do que os algoritmos de ordenação simples, como
o Quick Sort, o Insertion Sort e o Bubble Sort. O Smart Sort é mais eficiente e oferece os
melhores resultados do que os algoritmos de ordenação simples. Ele é muito útil para grandes
conjuntos de dados, pois é mais eficiente do que os algoritmos de ordenação simples. No
entanto, o Smart Sort não é considerado um algoritmo de ordenação simples, e, portanto,
é a alternativa correta.
Letra b.

011. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Quanto aos conceitos


de árvore binária, assinale a alternativa correta.
a) Operações que utilizam recursão não podem ser realizadas sobre árvores binárias.
b) A árvore pode ser vazia, isto é, não ter nenhum elemento.
c) Uma árvore estritamente binária com n folhas tem 2n2 - 1 nós.
d) A altura de um nó é o comprimento do menor caminho do nó até o seu primeiro descendente.
e) Uma árvore binária completa possui, no máximo, oito nós.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 54 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) Errada. Operações que utilizam recursão podem ser realizadas sobre árvores binárias,
pois a recursão é usada para navegar através da árvore binária.
b) Certa. Uma árvore binária pode ser vazia, ou seja, o conjunto de elementos está vazio. É
uma característica de árvores binárias. As outras alternativas não estão corretas.
c) Errada. Uma árvore estritamente binária com n folhas tem 2n + 1 nós, pois cada nó em
uma árvore binária tem, no máximo, dois filhos.
d) Errada. Uma árvore binária completa possui, no mínimo, oito nós, pois existem vários
tipos de árvores binárias, com diferentes números mínimos de nós.
e) Errada. A altura de um nó é o comprimento do maior caminho do nó até o seu primeiro
descendente, pois a altura de um nó é a distância entre o nó e a raiz da árvore.
Letra b.

012. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Nas estruturas


conhecidas como árvores, o nó do topo da árvore, do qual descendem os demais nós,
denomina-se nó
a) interior.
b) terminal.
c) raiz.
d) exterior.
e) filho.

O nó raiz é uma referência para todos os outros nós da árvore, e é geralmente marcado
como o nó 0. A partir do nó raiz, os outros nós são chamados de nós filhos. Os nós que não
possuem filhos são chamados de nós folha.
Letra c.

013. (IBFC/DPE-MT/ANALISTA - ANALISTA DE SISTEMAS/2022) Assinale a alternativa que


apresenta a relação entre as duas estruturas de dados da coluna da esquerda com as
respectivas características técnicas da coluna da direita.
(1) PILHA
(2) FILA
a) O elemento inserido por primeiro é o primeiro elemento a sair da lista.
b) O elemento inserido por último é o primeiro elemento a sair da lista.
c) Precisa-se de apenas um ponteiro para acessar a lista.
d) Precisa-se de dois ponteiros para acessar a lista.
Assinale Oaconteúdo
alternativa correta.
deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 55 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) 1BC - 2AD
b) 1AD - 2BC
c) 1BD - 2AC
d) 1AC - 2BD

A pilha é uma estrutura de dados Last In, FirstOut (LIFO), ou seja, o elemento inserido por
último é o primeiro elemento a sair da lista. Por isso, a opção B foi escolhida. Além disso,
precisa de apenas um ponteiro para acessar a pilha, que representa o topo da pilha, portanto
a opção D está relacionada também a pilha.
A fila é uma estrutura de dados First In, First Out (FIFO), ou seja, o elemento inserido por
primeiro é o primeiro elemento a sair da lista. Por isso, a opção A foi escolhida. Além disso,
precisa-se de dois ponteiros para acessar a lista, um ponteiro para o início da lista e um
ponteiro para o final da lista, portanto a opção D está relacionada também a fila.
Letra a.

014. (FGV/SEFAZ-AM/TÉCNICO DA FAZENDA ESTADUAL – TARDE/2022) A estrutura de dados


usada em índices multiníveis dinâmicos em banco de dados relacionais, que garantem que
tais estruturas sempre estejam balanceadas e que o espaço desperdiçado pela exclusão
de itens de dados, se houver, nunca se torne excessivo, é denominada
a) fila.
b) hash.
c) bitmap.
d) árvore B.
e) árvore binária.

A árvore B é uma estrutura de dados usada para armazenar informações organizadas e


permitir acesso rápido. A árvore B é formada por nós de duas maneiras básicas, folhas e
nós internos. As folhas contêm os valores reais da árvore, enquanto os nós internos são
usados ​​para encontrar os valores desejados. A árvore B é uma árvore binária com algumas
propriedades definidas. Essas propriedades incluem o número mínimo de nós, o número
máximo de nós-filhos, o número máximo de chaves e a altura máxima da árvore. Essas
propriedades garantem que cada nível da árvore possua o número correto de nós-filhos e
assegurar que a árvore esteja balanceada. A árvore B é útil para operações de pesquisa, pois
ela oferece melhores tempos de acesso aos dados quando comparada a outras estruturas
de dados de índices. Além disso, a árvore B é bastante eficiente para inserir, excluir e alterar
dados, pois a estrutura não precisa ser rebalanceada a cada operação. Por último, a árvore B
ocupa menos espaço de memória em comparação com outras estruturas de dados.
Letra d.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 56 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

015. (CESPE-CEBRASPE/BANRISUL/ANALISTA DE SEGURANÇA DA TECNOLOGIA DA


INFORMAÇÃO/2022) A respeito de algoritmos de hash, julgue o item que se segue.
A ferramenta mais utilizada para reduzir a probabilidade de acontecerem colisões em uma
função de resumo (hash) é o ajuste de distribuição, de maneira que, quanto mais heterogênea
e dispersa for a função resumo, menor será a sua probabilidade de colisão.

Quando dois dados originais geram o mesmo resumo, tem-se uma colisão de hash. O
objetivo principal dos projetistas de função hash é reduzir ao máximo a probabilidade de
ocorrência das colisões. A ferramenta mais usada para reduzir essa probabilidade é o ajuste
da distribuição dos resumos. Quanto mais uniforme e dispersa é a função resumo, menor
é a sua probabilidade de colisão.
Errado.

016. (CESPE-CEBRASPE/BANRISUL/ANALISTA DE SEGURANÇA DA TECNOLOGIA DA


INFORMAÇÃO/2022) A respeito de algoritmos de hash, julgue o item que se segue.
Hash é o resultado único e de tamanho fixo de um método criptográfico aplicado sobre
uma informação, conhecido como função de resumo.

Uma função de hash é uma função matemática que aceita um valor de entrada de tamanho
arbitrário e o converte em um valor de saída de tamanho fixo. Essa função é usada para
calcular o índice de um elemento na tabela de dispersão. Além disso, as funções de hash são
usadas para ajudar a gerar índices únicos para cada entrada, garantindo que cada entrada
possa ser recuperada de forma rápida.
Certo.

017. (UFMT/CÂMARA DE CÁCERES – MT/TÉCNICO EM INFORMÁTICA/2022) Em programação,


os dados são organizados, gerenciados e armazenados em diferentes formas, concebendo
diferentes estruturas de dados. Com base em estruturas de dados convencionais, assinale
a afirmativa correta.
a) Qualquer árvore binária de busca de nós será balanceada.
b) Na lista duplamente encadeada de nós, cada nó possui duas ligações: uma para a cabeça
da lista e outra para o próximo nó.
c) Na lista duplamente encadeada de nós, cada nó possui duas ligações: uma para o nó
anterior e outra para o próximo nó.
d) Qualquer árvore binária de nós será uma árvore binária de busca.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 57 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) Errada. Qualquer árvore binária de busca de nós não necessariamente será balanceada. Uma
árvore binária de busca é uma estrutura de dados que mantém os elementos em uma ordem
lógica para permitir que sejam encontrados de forma rápida, mas nem sempre é balanceada.
b) Errada. Na lista duplamente encadeada de nós, cada nó possui duas ligações, não apenas
uma para a cabeça da lista.
c) Certa. A lista duplamente encadeada é uma estrutura de dados usada para armazenar
elementos de forma ordenada. Ela é representada por um conjunto de nós, onde cada nó
possui duas ligações: uma para o nó anterior e outra para o próximo nó. Essa estrutura de
dados é útil para operações de inserção e remoção de elementos, pois é mais fácil percorrer
a lista e localizar o elemento desejado.
d) Errada. Uma árvore binária não é necessariamente uma árvore binária de busca. Uma
árvore binária é uma estrutura de dados hierarquicamente organizada que pode ser usada
para representar e armazenar dados de maneira eficiente. Uma árvore binária de busca
possui características adicionais, como o fato de que os elementos são armazenados em
ordem lógica, o que permite que sejam facilmente localizados.
Letra c.

018. (CESPE-CEBRASPE/BNB/ANALISTA DE SISTEMAS - DESENVOLVIMENTO DE SISTEMAS/2022)


No que se refere aos conceitos de ordenamento, julgue o seguinte item.
A complexidade de tempo do algoritmo bubble sort é do tipo O(n × logn), logo, no caso desse
algoritmo, o tempo de execução aumenta exponencialmente com o acréscimo do valor de n.

Essa afirmação é falsa, pois a complexidade de tempo do algoritmo bubble sort é O(n²). O
algoritmo bubble sort é um dos algoritmos de ordenação mais simples, mas também é o
mais lento. O tempo de execução aumenta quadraticamente com o tamanho do conjunto
de dados a ser ordenado.
Errado.

019. (FEPESE/UDESC/ANALISTA DE SISTEMAS/2022) Assinale a alternativa correta com


relação à estrutura de arquivos.
a) Uma árvore é considerada balanceada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de no máximo uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
b) Uma árvore é considerada desbalanceada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de, no máximo, uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 58 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

c) Uma árvore é considerada degenerada se, e somente se, para qualquer nó, a altura de
suas duas subárvores difere de, no máximo, uma unidade. Exemplos de árvores balanceadas
são as árvores AVL.
d) Uma árvore AVL é uma árvore na qual as alturas das subárvores esquerda e direita de
cada nó diferem no mínimo por uma unidade.
e) Na inserção em uma árvore AVL utiliza-se um processo de balanceamento que pode ser
de 2 tipos gerais: Rotação simples ou Rotação complexa.

a) Certa. Uma árvore é considerada balanceada quando a altura de suas duas subárvores
difere de, no máximo, uma unidade. Exemplos de árvores balanceadas são as árvores AVL,
que são árvores binárias de busca autobalanceadas. Estas árvores possuem a propriedade
de balanceamento, o que significa que a altura de suas duas subárvores difere de, no
máximo, uma unidade.
b) Errada. Uma árvore desbalanceada é aquela em que a altura das subárvores difere em
mais do que uma unidade. Árvores AVL são exemplos de árvores balanceadas, pois a altura
de suas subárvores difere no máximo em uma unidade.
c) Errada. Uma árvore degenerada é aquela em que cada nó tem apenas um filho, o que a
torna uma estrutura linear em vez de uma estrutura hierárquica. A altura de cada subárvore
é zero ou um, o que faz com que a altura total da árvore seja igual ao número de nós menos
um. Por outro lado, uma árvore balanceada é uma árvore em que as subárvores de cada nó
têm alturas que diferem em no máximo uma unidade, e exemplos de árvores balanceadas
incluem as árvores AVL, árvores rubro-negras e árvores B.
d) Errada. Uma árvore AVL é uma árvore binária de busca balanceada na qual as alturas das
subárvores esquerda e direita de cada nó diferem no máximo por uma unidade.
e) Errada. Na inserção em uma árvore AVL, utiliza-se um processo de balanceamento que
pode ser realizado por meio de rotações simples ou rotações duplas.
Letra a.

020. (QUADRIX/PRODAM-AM/ANALISTA DE TI - ANALISTA DE TELECOMUNICAÇÕES/2022) Pelo


fato de a fila ser uma coleção dinâmica, algumas operações podem aumentar ou diminuir
o seu tamanho. A operação que permite aumentar o seu tamanho é
a) desenfileira.
b) enfileira.
c) iniciaf.
d) vaziaf.
e) cheiaf.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 59 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Enfileirar (enqueue) é o processo de adicionar um elemento ao final de uma fila. Uma fila
é uma estrutura de dados baseada na ideia de primeiro a entrar, primeiro a sair (First In,
First Out – FIFO). Quando um elemento é enfileirado, ele é adicionado à parte traseira da
fila, portanto, será o último a sair. Isso garante que a ordem de inserção dos elementos
seja preservada.
Enfileirar é um processo simples e é usado principalmente para organizar as operações em
uma fila. Por exemplo, em um sistema de processamento de pedidos, novos pedidos podem
ser enfileirados para que sejam processados na ordem em que foram recebidos.
Letra e.

021. (FGV/TCE-TO/AUDITOR DE CONTROLE EXTERNO - TECNOLOGIA DA INFORMAÇÃO/2021) As


funções de hash são comumente empregadas nos mecanismos de segurança da informação.
Quanto às suas propriedades básicas, para que o algoritmo de hash seja considerado forte,
é correto afirmar que:
a) a mesma entrada deve produzir saídas diferentes.
b) deve ser difícil encontrar duas entradas que produzam o mesmo hash.
c) deve ser possível produzir a entrada original a partir do hash resultante.
d) pequenas mudanças na entrada devem produzir pequenas mudanças no hash resultante.
e) mesmo que as entradas possuam o mesmo tamanho, os resultados de hash terão
tamanhos diferentes.

O objetivo principal de um algoritmo de hash é garantir a integridade dos dados, ou seja,


certificar se os dados não foram adulterados. Para isso, é necessário que o algoritmo seja
capaz de detectar qualquer alteração nos dados, e isso só é possível se a função de hashing
for forte, ou seja, se for difícil encontrar duas entradas que produzam o mesmo hash.
Assim, podemos afirmar que esse é um dos principais fatores para garantir a segurança
de qualquer algoritmo de hash.
Letra b.

022. (QUADRIX/PRODAM-AM/ANALISTA DE TI - ANALISTA DE DESENVOLVIMENTO DE


SISTEMAS/2022) Assinale a alternativa que apresenta a estrutura que é muito útil para a
implementação de algoritmos que necessitam de estruturas hierárquicas, sendo caracterizada
como uma estrutura de dados bidimensional, não linear, com propriedades especiais.
a) lista
b) fila
c) pilha
d) árvore
e) lista encadeada
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 60 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Uma árvore é uma estrutura de dados hierárquica, que consiste em nós ligados por arestas.
Cada nó pode ter vários filhos, mas apenas um nó pai. O nó raiz é o nó que não tem nenhum
nó pai. Uma árvore é utilizada para armazenar dados de forma eficiente e organizada. Cada
nó contém um valor, que pode ser uma palavra, um número ou outro tipo de dado. As árvores
são usadas para armazenar e recuperar dados de forma rápida, pois as operações de busca,
inserção e remoção podem ser realizadas em tempo constante. As árvores também são
utilizadas na programação, especialmente para implementar árvores de decisão e árvores
de pesquisa.
Letra d.

023. (QUADRIX/SEDF/PROFESSOR DE EDUCAÇÃO BÁSICA – INFORMÁTICA/2022) Acerca dos


aspectos das linguagens de programação e das estruturas de dados e da programação
orientada a objetos (POO), julgue o item.
Em uma árvore binária, todos os nós de uma subárvore direita são maiores que o nó raiz.

Uma árvore binária é uma estrutura de dados em que cada nó contém no máximo dois filhos,
conhecidos como nós esquerdo e direito. As árvores binárias são usadas para armazenar
e recuperar dados. O nó raiz é o nó original no topo da árvore, que está ligado a todos os
outros nós.
Uma árvore binária é criada usando a propriedade de ordenação, onde todos os nós à
esquerda do nó raiz são menores que ele e todos os nós à direita desse nó são maiores
que ele. Essa propriedade é importante para a árvore binária para garantir que os dados
possam ser facilmente armazenados e recuperados usando busca binária. Na busca binária,
o nó raiz é usado como o nó de referência. O valor armazenado no nó raiz é comparado ao
valor que está sendo procurado. Se o valor for maior que o valor armazenado no nó raiz,
então a busca é direcionada para a subárvore direita. Se o valor for menor, então a busca
é direcionada para a subárvore esquerda.
Essa propriedade também garante que, ao percorrer a árvore binária, os valores armazenados
nos nós sejam devolvidos em ordem crescente. Dessa forma, é possível realizar operações
de ordenação de dados eficientes.
Certo.

024. (IBFC/AFEAM/ESPECIALISTA DE FOMENTO - DESENVOLVIMENTO DE SISTEMAS/2022)


Assinale, das alternativas abaixo, a única que identifica respectivamente uma Estrutura
de Dados do tipo FIFO (First In, First Out) e uma outra com a Estrutura de dados do tipo
LIFO (Last In, First Out):
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 61 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) lista - vetor
b) pilha - fila
c) vetor - lista
d) fila - pilha

Uma fila é uma estrutura de dados baseada na ideia de “primeiro a entrar, primeiro a
sair” (FIFO). É usado para armazenar dados de forma sequencial. Quando um elemento
é adicionado à fila, é colocado no final da fila. Quando um elemento é removido da fila, é
removido do início da fila.
Uma pilha é uma estrutura de dados baseada na ideia de “último a entrar, primeiro a
sair” (LILO). É usado para armazenar dados de forma sequencial. Quando um elemento é
adicionado à pilha, é colocado no topo da pilha. Quando um elemento é removido da pilha,
é removido do topo da pilha.
Letra d.

025. (IBFC/AFEAM/ESPECIALISTA DE FOMENTO - DESENVOLVIMENTO DE SISTEMAS/2022)


A respeito das estruturas de dados e algoritmos amplamente utilizados na execução de
operações de busca e indexação, analise as afirmativas abaixo e marque alternativa correta.
I – Busca sequencial é a mais elementar de todas as buscas. Considerando a busca em uma
estrutura de dados com informações ordenadas, a busca sequencial será sempre menos
eficiente do que a busca binária, no pior caso. A busca binária se beneficia do fato da
estrutura de dados estar ordenada, isso facilita sua estratégia de busca.
II – As funções hash são usadas para mapearmos grandes conteúdos de informações que,
mesmo tendo tamanho variável, retornaram como resultado informações de pequeno porte
e de tamanho fixo. Tratam-se de funções probabilísticas, ou seja, devem resultar sempre
no mesmo valor toda vez que receberem um mesmo dado como entrada.
III – Árvores AVL possuem como uma de suas características O fato de serem balanceada.
Isso significa que a altura sub árvore esquerda de qualquer nó tem a mesma altura da sua
sub árvore direita.
a) Apenas as afirmativas I e II estão corretas.
b) Apenas a afirmativa I está correta.
c) Apenas a afirmativa III está correta.
d) Apenas as afirmativas II e III estão corretas.
e) Todas as afirmativas estão corretas.

A afirmativa I está CERTA. A busca sequencial é sempre maior do que a busca binária, pois
a linear tem complexidade O(n) e a binária tem a complexidade O(log n). De fato, o que faz
toda a diferença é que na binária temos a ordenação.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 62 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

A afirmativa II está ERRADA. Funções hash são usadas para mapear grandes conteúdos de
informações e retornar resultados de pequeno porte e de tamanho fixo, mas elas não são
probabilísticas, ou seja, não retornam sempre o mesmo resultado para a mesma entrada.
As funções hash são criptograficamente seguras, ou seja, não é possível prever o resultado
dado o dado de entrada.
A afirmativa III está ERRADA. Uma árvore AVL é uma árvore na qual as alturas das subárvores
esquerda e direita de cada nó diferem no máximo por uma unidade.
Letra b.

026. (FEPESE/UDESC/ANALISTA DE SISTEMAS) Analise as afirmativas abaixo com relação


ao assunto Árvore-B.
1. Uma Árvore-B de ordem m é uma árvore m-direcional tal que todas as folhas estão no
mesmo nível.
2. Uma Árvore-B de ordem m é uma árvore m-direcional tal que todos os nós internos, com
exceção da raiz, estão restritos a terem no máximo 2 filhos não vazios.
3. Uma Árvore-B de ordem m é uma árvore m-direcional tal que a raiz deve ter pelo menos
m filhos não vazios.
Assinale a alternativa que indica todas as afirmativas corretas.
a) É correta apenas a afirmativa 1.
b) É correta apenas a afirmativa 2.
c) São corretas apenas as afirmativas 1 e 2.
d) São corretas apenas as afirmativas 1 e 3.
e) São corretas apenas as afirmativas 2 e 3.

A afirmativa I está CERTA. A busca sequencial é sempre maior do que a busca binária, pois
a linear tem complexidade O(n) e a binária tem a complexidade O(log n). De fato, o que faz
toda a diferença é que na binária temos a ordenação.
A afirmativa II está ERRADA. Funções hash são usadas para mapear grandes conteúdos de
informações e retornar resultados de pequeno porte e de tamanho fixo, mas elas não são
probabilísticas, ou seja, não retornam sempre o mesmo resultado para a mesma entrada.
As funções hash são criptograficamente seguras, ou seja, não é possível prever o resultado
dado o dado de entrada.
A afirmativa III está ERRADA. Uma árvore AVL é uma árvore na qual as alturas das subárvores
esquerda e direita de cada nó diferem no máximo por uma unidade.
Letra b.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 63 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

027. (FGV/TJ-RO/ANALISTA JUDICIÁRIO - ANALISTA DE SISTEMA - DESENVOLVIMENTO DE


SISTEMA/2021) Considere a lista duplamente encadeada exibida a seguir.
(1, 3, 0, “Verde”)
(2, 4, 3, “Azul”)
(3, 2, 1, “Amarelo”)
(4, 0, 2, “Vermelho”)
Cada elemento pertencente à lista é representado por uma quádrupla, com o seguinte
formato:
(<id>, <id do anterior>, <id do seguinte>, <conteúdo>).
A ordem do conteúdo dos componentes, segundo a instância da lista apresentada, é:
a) Amarelo, Verde, Azul, Vermelho.
b) Azul, Verde, Vermelho, Amarelo.
c) Verde, Vermelho, Amarelo, Azul.
d) Vermelho, Amarelo, Azul, Verde.
e) Vermelho, Azul, Amarelo, Verde.

As listas duplamente encadeadas são aquelas que possuem o conteúdo de dois ponteiros,
um apontando para o elemento anterior e outro para o seguinte.

A questão também afirma que essa lista encadeada possui o seguinte esquema:
(<id>, <id do anterior>, <id do seguinte>, <conteúdo>)
Dessa forma, podemos observar o conjunto armazenado na lista encadeada:
(1, 3, 0, “Verde”) // Esse elemento representa o final de nossa lista, já que o elemento
seguinte é o zero.
(2, 4, 3, “Azul”) // Esse elemento está posicionado entre os elementos 4 (Vermelho) e
3 (Amarelo).
(3, 2, 1, “Amarelo”) // Esse elemento está posicionado entre os elementos 2 (Azul) e 1 (Verde).
(4, 0, 2, “Vermelho”) // Esse elemento representa o início da nossa sequência, já que o
elemento anterior é o zero.
Com isso, a nossa sequência encadeada fica:
Vermelho, Azul, Amarelo, Verde.
Letra e.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 64 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

028. (CESGRANRIO/BANCO DO BRASIL/AGENTE DE TECNOLOGIA/2021) Desejam-se realizar


buscas nas seguintes coleções de dados, representadas na linguagem Java:
I – Um array de 1.000 números inteiros ordenados de forma decrescente.
II – Uma lista encadeada desordenada e alocada dinamicamente, cujos 1.000 nós contêm
strings (uma string por nó).
III – Uma lista encadeada, alocada dinamicamente, cujos 1.000 nós contêm números decimais
(um número double por nó) ordenados de forma ascendente.
Levando-se em consideração a exequibilidade e a eficiência, quais métodos de busca devem
ser empregados, respectivamente, em cada um dos três casos acima?
a) I – sequencial; II – sequencial; III – binária;
b) I – binária; II – sequencial; III – sequencial;
c) I – binária; II – sequencial; III – binária;
d) I – sequencial; II – sequencial; III – sequencial;
e) I – sequencial; II – binária; III – binária;

Com relação às buscas em vetores elas podem ser feitas de duas formas: sequencial, ou
linear, e binária.
Quando temos um vetor que não está ordenado a melhor pedida é fazer uma busca em cada
um dos elementos presentes nesse array até que seja encontrada uma correspondência
válida. Ao fazer buscas em um vetor que não está ordenado, estamos diante da busca
sequencial. Porém, quando o vetor está ordenado não faz sentido utilizar o método de
busca sequencial. Nesse caso, é melhor utilizar a busca binária.
Sobre o item I, como estamos fazendo busca em um array ordenado, será utilizada a
busca binária.
Sobre o item II, como temos uma lista desordenada, ou seja, um array desordenado, será
utilizada a busca sequencial.
Sobre o item III, se um vetor está ordenado, seja de forma crescente ou decrescente, o
método de busca mais indicado é a busca binária.
Letra c.

029. (CESPE-CEBRASPE/SEED-PR/PROFESSOR - EDUCAÇÃO BÁSICA E JORNADA/2021) Na


estrutura de dados denominada FILA,
a) o último elemento a ser inserido será o primeiro a ser retirado.
b) o primeiro elemento a ser inserido será o primeiro a ser retirado: adiciona-se item no
fim e remove-se item do início.
c) os elementos de um mesmo tipo de dado estão organizados de maneira sequencial e
ordenada.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 65 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

d) os elementos não estão necessariamente armazenados sequencialmente na memória


por ordem descrente de valores.
e) os elementos são formados de índices em duas dimensões: linhas e colunas.

Filas são estruturas de dados bastante utilizadas na computação, onde o primeiro elemento
a ser inserido, será também o primeiro a ser retirado (FIFO). Desta forma, os elementos
serão inseridos no fim e removidos pelo início.
Letra b.

030. (CESPE-CEBRASPE/SEED-PR/PROFESSOR - EDUCAÇÃO BÁSICA E JORNADA/2021) Em


determinada estrutura de dados, os valores seguem a regra segundo a qual o último a
entrar é o primeiro a sair.
Essa estrutura é do tipo
a) pilha.
b) fila.
c) lista encadeada.
d) lista duplamente encadeada.
e) matriz.

As pilhas são estruturas de dados do tipo LIFO (Last In, First Out), onde o último elemento
a ser inserido, será o primeiro a ser retirado. Assim, uma pilha permite acesso a apenas
um item de dados, o último inserido. Para processar o penúltimo item inserido, deve-se
remover o último.
Letra a.

031. (VUNESP/FITO/TÉCNICO EM GESTÃO – INFORMÁTICA/2020) Considere uma estrutura


de dados que consiste em um conjunto finito de nós e arestas interligando os nós.
Assinale a alternativa que apresenta uma estrutura de dados que corresponde a essa
definição.
a) Fila.
b) Grafo.
c) Pilha.
d) Tabela.
e) Vetor.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 66 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Um grafo é uma estrutura de dados que consiste em um conjunto de nós, que são conectados
por arestas. Os nós representam entidades, como pessoas, locais ou objetos, e as arestas
representam relações entre essas entidades. Os grafos podem ser usados ​​para modelar
diversos tipos de problemas em diferentes domínios, como redes sociais, grafos de redes
de computadores, grafos de fluxo de trabalho etc.
Letra b.

032. (VUNESP/SEMAE DE PIRACICABA – SP/PROGRAMADOR JUNIOR/2021) Considere uma


estrutura de dados T como sendo uma árvore binária do tipo AVL. Como característica,
essa estrutura de dados é uma árvore binária
a) balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores (esquerda
e direita) diferem de até uma unidade.
b) balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores (esquerda
e direita) são sempre idênticas.
c) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) diferem de até uma unidade.
d) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) são sempre idênticas.
e) não balanceada, em que, para qualquer nó de T, as alturas de suas duas subárvores
(esquerda e direita) diferem exatamente de uma unidade.

A árvore AVL é uma árvore binária de busca balanceada que é projetada para manter a
altura balanceada em cada nó, garantindo que a diferença entre as alturas da subárvore
esquerda e da subárvore direita de cada nó seja de no máximo um. Isso significa que, para
qualquer nó da árvore AVL, as alturas de suas duas subárvores (esquerda e direita) diferem
de no máximo uma unidade.
Essa característica de balanceamento é fundamental para garantir que as operações de
inserção, exclusão e busca na árvore AVL tenham um tempo de execução mais eficiente e
estável, tornando-a uma estrutura de dados muito útil em diversas aplicações em que é
importante manter uma estrutura de dados escalável e eficiente.
Letra a.

033. (QUADRIX/PRODAM-AM/PROGRAMADOR – DESENVOLVEDOR/2022) Assinale a alternativa


que apresenta o nome do tipo de estrutura em que cada elemento armazena um ou vários
dados e um ponteiro para o próximo elemento, que permite o encadeamento e mantém a
estrutura linear, sendo que, nesse tipo de estrutura, são abordadas as seguintes operações:
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 67 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

inserir no início da lista; inserir no fim; consultar toda a lista; remover um elemento qualquer
dela; e esvaziá-la.
a) lista simplesmente encadeada e não ordenada.
b) lista simplesmente encadeada e ordenada.
c) lista duplamente encadeada e não ordenada.
d) lista duplamente encadeada e não ordenada.
e) lista triplamente encadeada.

Uma lista simplesmente encadeada é uma estrutura de dados em que cada elemento
armazena um ou vários dados e um ponteiro para o próximo elemento, permitindo o
encadeamento e mantendo a estrutura linear.
Essa estrutura permite a inserção e remoção de elementos de forma dinâmica, sem a
necessidade de realocar a memória, o que é útil em casos em que o tamanho da lista pode
variar ao longo do tempo. Além disso, a lista pode ser percorrida sequencialmente para
consultar ou processar seus elementos.
No entanto, como os elementos da lista não são organizados de forma ordenada, a busca
de um elemento específico pode exigir a varredura de toda a lista, o que pode tornar o
processo de busca ineficiente em listas muito grandes.
Letra a.

034. (FGV/PREFEITURA DE MANAUS – AM/ANALISTA DE BANCO DE DADOS/2022) Observe a


configuração de uma árvore B, onde uma página pode ter no máximo 4 filhas, contendo as
chaves 7, 10, 15, 18, 20, 22, 26, 30, 35, 40.

Após a inserção da chave 5, a configuração das chaves do nó raiz da árvore seria


a) 5, 20, 30
b) 10, 20, 30
c) 5, 30
d) 10, 30
e) 20, 30

A chave 5 será inserida na seguinte página e posição da árvore B.


O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 68 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

Como cada página pode ter no máximo 4 filhas e ali já há 4 elementos, ocorre um overflow
e, assim, é necessário realizar um split para manter o balanceamento da árvore. Para isso,
pega-se o valor da mediana que, no caso, é o elemento 10 e suba ele para o nó raiz:

Desta forma, a árvore B ficará da seguinte forma:

Letra b.

035. (FGV/SEFAZ-AM/AUDITOR FISCAL DE TRIBUTOS ESTADUAIS/2022) A estrutura de dados


usada em índices multiníveis dinâmicos em banco de dados relacionais, que garantem que
tais estruturas sempre estejam balanceadas e que o espaço desperdiçado pela exclusão
de itens de dados, se houver, nunca se torne excessivo, é denominada
a) fila.
b) hash.
c) bitmap.
d) árvore B.
e) árvore binária.

A árvore B é uma estrutura de dados utilizada em bancos de dados relacionais para


implementar índices multiníveis dinâmicos. Ela é semelhante à árvore de busca binária,
mas com algumas diferenças importantes.
Uma das principais características da árvore B é que cada nó pode ter vários filhos, em vez
de apenas dois como na árvore de busca binária. Além disso, a árvore B é projetada para ter
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 69 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

um grande número de chaves e é balanceada automaticamente, o que significa que todas


as folhas têm a mesma profundidade.
Outra característica importante da árvore B é que ela é otimizada para armazenar grandes
quantidades de dados em dispositivos de armazenamento secundário, como discos rígidos.
Isso ocorre porque as chaves e os valores são armazenados em blocos que são lidos do
disco sob demanda, reduzindo a quantidade de acesso ao disco e melhorando a eficiência
da busca.
Por essas razões, a árvore B é uma estrutura de dados muito eficiente para implementar
índices de bancos de dados relacionais, pois permite a busca rápida de dados em grandes
conjuntos de dados.
Letra d.

036. (UFMT/POLITEC-MT/PERITO OFICIAL CRIMINAL - PERFIL: CIÊNCIA DA COMPUTAÇÃO


OU INFORMÁTICA/2022) Qual estrutura apresenta complexidade de inserção, remoção e
procura O(log(n)) independentemente se for o melhor ou o pior caso?
a) Pilha
b) Árvore Binária
c) Tabela Hash
d) Fila duplamente encadeada
e) Árvore AVL

A estrutura que apresenta complexidade O(log(n)) para inserção, remoção e busca


independentemente do melhor ou pior caso é a árvore balanceada, como a árvore AVL, a
árvore rubro-negra e a árvore B. Isso ocorre porque essas árvores são construídas de forma a
manter um equilíbrio entre seus ramos esquerdo e direito, garantindo que a altura da árvore
seja sempre logarítmica em relação ao número de elementos. Dessa forma, as operações de
inserção, remoção e busca são realizadas de forma eficiente, com complexidade O(log(n)).
Além disso, como o balanceamento é mantido ao longo do tempo, não há casos em que
essas operações se tornem mais lentas.
Letra e.

037. (CESPE-CEBRASPE/DPE-RO/ANALISTA DA DEFENSORIA PÚBLICA – PROGRAMAÇÃO/2022)


O algoritmo de ordenação que requer uma quantidade constante de O(1) espaço de memória
adicional é o algoritmo de
a) ordenação por seleção.
b) ordenação por mistura.
c) ordenação por inserção.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 70 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

d) ordenação por flutuação.


e) ordenação heapsort.

O algoritmo de ordenação por inserção requer uma quantidade constante de O(1) espaço
de memória adicional, pois a ordenação é feita “in-place”, ou seja, sem a necessidade de
criar uma nova estrutura de dados para armazenar os elementos ordenados. As outras
opções requerem, em algum momento do algoritmo, espaço adicional para armazenar os
elementos ordenados ou para auxiliar nas operações de ordenação.
Letra c.

038. (CESPE-CEBRASPE/POLITEC – RO/PERITO CRIMINAL - ÁREA 6 (CIÊNCIAS DA COMPUTAÇÃO/


INFORMÁTICA/ANÁLISE DE SISTEMAS)/2022) Assinale a opção em que é apresentada a
sequência correta de números correspondente à varredura da árvore binária representada
a seguir quando esta estiver sendo percorrida em profundidade por meio da utilização da
técnica do tipo pré-ordem.

a) 20, 21, 13, 32, 44, 51, 38, 47, 49, 80, 53, 52, 97
b) 51, 32, 44, 47, 49, 38, 13, 21, 20, 80, 53, 52, 97
c) 51, 32, 13, 21, 20, 44, 38, 47, 49, 80, 53, 52, 97
d) D 97, 80, 53, 52, 51, 32, 44, 38, 47, 49, 13, 21, 20
e) 21, 20, 13, 38, 44, 47, 49, 32, 53, 52, 80, 97, 51

O percurso baseado em pré-ordem (ou pré-ordem) é um dos três principais algoritmos de


percurso em árvores binárias de busca, juntamente com o percurso em ordem e o percurso em
pós-ordem. Neste tipo de percurso, a árvore é visitada em uma ordem específica, começando
pelo nó raiz, seguido dos nós da subárvore esquerda e depois os da subárvore direita.
O percurso em pré-ordem pode ser implementado de maneira recursiva, seguindo a
seguinte lógica:
Visita o nó atual;
Visita a subárvore esquerda do nó atual;
Visita a subárvore direita do nó atual.
Letra c.
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 71 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

039. (FGV/TJ-DFT/ANALISTA JUDICIÁRIO - ANÁLISE DE SISTEMAS/2022) Júlio está


desenvolvendo uma aplicação e precisa implementar um mecanismo de desfazer/refazer
de um editor de texto utilizando o algoritmo LIFO (Last In, First Out).
Para implementar o algoritmo LIFO, Júlio deve usar a estrutura de dados:
a) fila.
b) pilha.
c) árvore.
d) nó folha.
e) tabela hash.

Uma pilha é uma estrutura de dados onde o último elemento a ser adicionado é o primeiro
a ser removido (LIFO - Last In, First Out). As operações mais comuns em uma pilha são a
inserção de um elemento no topo da pilha e a remoção de um elemento do topo da pilha.
As pilhas também podem ser implementadas usando arrays ou listas encadeadas.
Letra b.

040. (FUNDATEC/PREFEITURA DE FLORES DA CUNHA – RS/TÉCNICO EM INFORMÁTICA/2022)


Assinale a estrutura de dados caracterizada por um conjunto de dados dispostos por uma
sequência de nós, onde cada nó também armazena um ponteiro que indica a posição do
próximo elemento.
a) Fila.
b) Pilha.
c) Lista encadeada.
d) Árvore balanceada.
e) Vetor.

Uma lista encadeada é uma estrutura de dados que armazena uma sequência de elementos,
cada um contendo um valor e um ponteiro para o próximo elemento na lista. Ao contrário
de um array, os elementos de uma lista encadeada podem ser alocados em posições de
memória não contíguas. Isso permite que elementos sejam adicionados ou removidos da
lista com eficiência, sem a necessidade de realocação de memória. As listas encadeadas são
frequentemente usadas em algoritmos que requerem inserções ou remoções frequentes
de elementos, ou em situações em que o tamanho da estrutura de dados é desconhecido
ou pode variar.
Letra c.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 72 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

041. (IBADE/SEA-SC/ANALISTA DE INFORMÁTICA/2022) Sistemas operacionais como o Linux,


e linguagens como Python, dispõem de rotinas de classificação (sort). Dentre os algoritmos
dessas rotinas há um método que percorre um vetor de elementos da esquerda para a
direita e, à medida que avança, vai ordenando os elementos à esquerda. Consiste em cada
passo, a partir do segundo elemento, selecionar o próximo item da sequência e colocá-lo
no local apropriado de acordo com o critério de ordenação. Esse método é chamado:
a) selection sort.
b) bubble sort.
c) inserction sort.
d) quick sort.
e) merge sort.

O método descrito é o algoritmo de ordenação por inserção (insertion sort). Ele percorre
o vetor de elementos da esquerda para a direita, inserindo cada elemento em sua posição
correta na parte ordenada do vetor. Ele é eficiente para pequenas quantidades de elementos,
mas pode ser ineficiente para grandes quantidades de elementos, pois requer tempo
proporcional ao quadrado do número de elementos para ordená-los.
Letra c.

042. (UFAM/UFAM/TÉCNICO EM TECNOLOGIA DA INFORMAÇÃO/2022) Sobre o Método de


Ordenação Merge Sort, é CORRETO afirmar que:
a) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação por inserção.
b) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação por seleção.
c) o Merge Sort, ou Ordenação por Mistura, é mais eficiente que o Método da Bolha (Bubble
Sort) apenas nos casos em que há poucos dados a serem ordenados.
d) o Merge Sort é mais eficiente que o Método da Bolha (Bubble Sort) em todos os casos.
e) o Merge Sort, ou Ordenação por Mistura, é um algoritmo de ordenação que usa a estratégia
dividir-para-conquistar.

O merge sort, ou ordenação por mistura, é um algoritmo de ordenação que usa a estratégia
dividir-para-conquistar. O merge sort divide a sequência em subsequências menores, ordena
cada subsequência recursivamente e, em seguida, combina as subsequências em uma
única sequência ordenada. Esse algoritmo possui uma complexidade de tempo de O(n log
n) e é eficiente para ordenar grandes quantidades de dados. Já o bubble sort possui uma
complexidade de tempo de O(n²) e é menos eficiente para grandes quantidades de dados.
Letra e.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 73 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

043. (IBADE/SES-MG/T01 - ÁREA DE TI – TARDE/2022) O algoritmo de ordenação decrescente


onde cada entidade é comparada com o seu posterior e, se maior, invertidas as posições
sucessivamente, até que a coleção esteja ordenada, é chamado:
a) selection sort.
b) digital sort.
c) bubble sort.
d) quick sort.
e) random sort.

A descrição apresentada na pergunta se refere ao algoritmo de ordenação conhecido como


bubble sort. Ele compara pares de elementos adjacentes e os troca de posição se necessário,
percorrendo a lista várias vezes até que não haja mais elementos fora de ordem. O algoritmo
recebeu esse nome porque, à medida que os elementos maiores “flutuam” para o topo da
lista, eles lembram bolhas de ar subindo à superfície da água.
Letra c.

044. (FGV/MPE-GO/ANALISTA EM INFORMÁTICA/2022) Árvores B são muito usadas na


implementação de índices em bancos de dados.
Uma árvore desse tipo é dita balanceada quando
a) a complexidade do algoritmo de busca é logarítmica.
b) as chaves são armazenadas em ordem de classificação, crescente ou decrescente.
c) é possível localizar registros referenciados por um intervalo de chaves.
d) o número de ponteiros em cada nó intermediário é constante.
e) toda página folha tem o mesmo número de páginas intermediárias até a raiz.

a) Errada. A complexidade do algoritmo de busca em uma árvore B balanceada é logarítmica


em relação ao número de chaves armazenadas na árvore, mas a afirmação não define se a
árvore está balanceada ou não.
b) Errada. A ordem de classificação das chaves em uma árvore B é definida pelas regras
de inserção e balanceamento, não necessariamente por ordem crescente ou decrescente.
c) Errada. É possível localizar registros referenciados por um intervalo de chaves em qualquer
árvore de busca que armazene as chaves em ordem.
d) Errada. O número de ponteiros em cada nó intermediário em uma árvore B não é constante.
É definido pelo número mínimo e máximo de chaves por nó, que é uma característica da
implementação da árvore.
e) Certa. As árvores B são consideradas balanceadas quando todas as páginas folhas têm o
mesmo número de páginas intermediárias até a raiz, garantindo assim que a profundidade
O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 74 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

da árvore seja minimizada e que as operações de busca, inserção e remoção tenham


complexidade O(log n).
Letra e.

045. (QUADRIX/CRMV-MS/TÉCNICO EM INFORMÁTICA/2022) Julgue o item, relativos aos


conceitos de programação e às estruturas de dados.
Em uma árvore, o conjunto de um ou mais nós é finito e hierarquicamente subordinado a
outro.

Uma árvore é uma estrutura de dados hierárquica em que cada nó (exceto o nó raiz) está
ligado a apenas um nó pai e pode ter vários nós filhos. Os nós filhos, por sua vez, podem
ter outros nós filhos, formando assim uma hierarquia ou árvore. Essa estrutura é muito
utilizada em algoritmos de busca e ordenação, bem como em outras aplicações, como
estruturas de diretórios em sistemas operacionais.
Certo.

046. (FGV/PC-AM/PERITO CRIMINAL - 4ª CLASSE - PROCESSAMENTO DE DADOS/2022)


Assinale as operações características de uma estrutura de dados do tipo pilha (stack).
a) IMPORT, EXPORT.
b) INPUT, OUPUT.
c) INSERT, REMOVE.
d) PUSH, POP
e) READ, READLN.

Uma estrutura de dados do tipo pilha (stack) é caracterizada pelas seguintes operações:
Push: adiciona um novo elemento no topo da pilha;
Pop: remove o elemento do topo da pilha;
Top (ou Peek): retorna o elemento no topo da pilha sem removê-lo;
Size: retorna a quantidade de elementos na pilha;
IsEmpty: verifica se a pilha está vazia.
A pilha segue o princípio LIFO (Last In, First Out), ou seja, o último elemento adicionado é o
primeiro a ser removido. Essa estrutura é comumente utilizada em algoritmos que precisam
realizar operações em ordem inversa à ordem em que foram realizadas.
Letra d.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 75 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

047. (CESPE-CEBRASPE/PETROBRAS/ANALISTA DE SISTEMAS – ENGENHARIA DE


SOFTWARE/2022) Julgue o item subsequente, a respeito de algoritmos para ordenação e
pesquisa e de programação recursiva.
A ordenação por seleção, ou Selection sort, requer apenas uma quantidade constante O
(1) de espaço de memória adicional.

O algoritmo de ordenação por seleção (selection sort) requer espaço adicional para a troca
dos elementos, e este espaço é proporcional ao número de elementos sendo ordenados, ou
seja, não é uma quantidade constante. Além disso, o algoritmo não é eficiente para ordenar
grandes conjuntos de dados, pois possui complexidade de tempo O(n²), onde n é o número
de elementos a serem ordenados.
Errado.

048. (CESPE-CEBRASPE/DPE-RO/TÉCNICO EM INFORMÁTICA/2022) Em um sistema


operacional, a estrutura de dados utilizada para organizar chamadas de funções recursivas
por meio da inserção ou remoção de elementos via operações como push e pop é denominada
a) lista estática.
b) fila.
c) hash.
d) pilha.
e) lista dinâmica.

Em sistemas operacionais e na programação em geral, é comum o uso de uma estrutura de


dados do tipo pilha (stack) para controle de chamadas de funções recursivas. A cada nova
chamada, é feito um push (inserção) na pilha, e a cada retorno, é feito um pop (remoção).
Isso permite que o sistema operacional ou a linguagem de programação gerencie a pilha
de chamadas de maneira eficiente e segura.
Letra d.

049. (FAURGS/SES-RS/ANALISTA DE SISTEMAS/2022) Qual é a afirmativa correta sobre


estruturas de dados?
a) Uma pilha armazena os dados em uma estrutura de dados do tipo árvore binária.
b) Listas encadeadas são estruturas que encadeiam os elementos através de um ponteiro
no qual todos os elementos, exceto o último, apontam para o seguinte.
c) Em uma pilha, o primeiro elemento a ser inserido será o primeiro a ser retirado, ou seja,
adicionam-se itens no fim e removem-se do início.
d) Uma fila armazena os dados em uma estrutura de dados do tipo grafo.
e) Em uma fila, o primeiro elemento a ser inserido será o último a ser retirado, ou seja,
adicionam-se e removem-se
O conteúdo deste livro eletrônicoitens no para
é licenciado início.
Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 76 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

a) Errada. Pilhas são estruturas de dados do tipo LIFO (Last In, First Out) que armazenam
os dados de forma linear. Árvores binárias são estruturas de dados hierárquicas.
b) Certa. Em uma lista encadeada, cada elemento contém um ponteiro para o próximo
elemento da lista, exceto o último elemento que aponta para null. Essa estrutura permite
a inserção e remoção eficientes de elementos em qualquer posição da lista, ao contrário de
uma estrutura de dados como um array, que requer realocação de memória para inserções
e remoções no meio da estrutura.
c) Errada. A descrição está correta, mas se refere à fila, não à pilha.
d) Errada. Filas são estruturas de dados do tipo FIFO (First In, First Out) que armazenam os
dados de forma linear. Grafos são estruturas de dados que representam relacionamentos
entre objetos.
e) Errada. A descrição está correta, mas se refere à pilha, não à fila.
Letra b.

050. (CESPE-CEBRASPE/DPE-RO/ANALISTA DA DEFENSORIA PÚBLICA – PROGRAMAÇÃO/2022)


Uma árvore binária completa com 15 nós tem altura igual a
a) 1.
b) 2.
c) 3.
d) 4.
e) 5.

Se uma árvore binária completa tem altura h, então ela tem 2^(h+1) - 1 nós.
Como a árvore binária completa em questão tem 15 nós, podemos encontrar sua altura
da seguinte forma:
2^(h+1) - 1 = 15
Simplificando a equação, temos:
2^(h+1) = 16
h+1 = log2(16)
h+1 = 4
h=3
Portanto, a altura da árvore binária completa com 15 nós é 3.
Letra c.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 77 de 79
Conhecimentos Específicos
Estrutura de Dados e Algoritmos
Sérgio Sierro

REFERÊNCIAS

CORMEN, Thomas H. et al. Algoritmos: teoria e prática. Elsevier, 2012.

GOODRICH, Michael T.; TAMASSIA, Roberto. Estruturas de dados e algoritmos em Java.


Porto Alegre: Bookman, 2013.

KNUTH, Donald E. A arte de programar computadores. Rio de Janeiro: Campus, 1998.

LAFORE, Robert. Estruturas de dados e algoritmos em Java. São Paulo: Pearson, 2004.

LOPES, Raul. Estrutura de dados e algoritmos em Java. Novatec Editora, 2016.

MANBER, Udi. Algoritmos: projetos e análises. LTC, 2001.

MEIRA, Silvio do Lago Pereira. Estrutura de dados: algoritmos, análise da complexidade e


implementações em Java e C/C++. São Paulo: Editora Erica, 2014.

SEDGEWICK, Robert; WAYNE, Kevin. Algorithms. Addison-Wesley, 2011.

SILVA, Bruno; PEREIRA, Leandro. Estrutura de dados: uma abordagem prática. São Paulo:
Novatec Editora, 2018.

SZWARCFITER, Jayme Luiz; MARKENZON, Lilian. Estruturas de dados e seus algoritmos.


Rio de Janeiro: LTC, 2010.

TAHOORA, Mohammad Reza Mousavi. Data Structures and Algorithms in Python. 2018.

TANENBAUM, Andrew S. Sistemas Operacionais Modernos. Rio de Janeiro: Pearson, 2008.

TRONO, James N. Estrutura de dados e algoritmos: estudo de estruturas elementares


em linguagem C. Bookman Editora, 2000.

VIEIRA, Júlio Carlos Balzano. Algoritmos e Estruturas de Dados. São Paulo: Thomson
Learning, 2007.

ZIVIANI, Nivio. Projeto de algoritmos: com implementações em Pascal e C. Thomson


Learning, 2004.

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

www.grancursosonline.com.br 78 de 79
Abra

caminhos

crie

futuros
gran.com.br

O conteúdo deste livro eletrônico é licenciado para Foco - , vedada, por quaisquer meios e a qualquer título,
a sua reprodução, cópia, divulgação ou distribuição, sujeitando-se aos infratores à responsabilização civil e criminal.

Você também pode gostar