Você está na página 1de 282

Estruturas de Dados

Ordenação, pesquisa e hashing


Professor Marcelo Pacote – marcelopacote@dominandoti.com.br

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Acesse nosso site em
WWW.DOMINANDOTI.COM.BR

Cursos Turmas em Brasília, na sua cidade, e cursos online


Livros Edições publicadas, lançamentos e promoções
Fórum Interação direta entre estudantes e com os professores

Simulados Questões inéditas, ranking de notas e correções em vídeo

Blog Dicas e macetes de estudo, indicações de bibliografia, etc.

Materiais Versões atualizadas de notas de aula e listas de exercícios

Curta o Dominando TI no
e receba nossas dicas sobre concursos!

W W W. D O M I N A N D OT I .CO M . B R
Agenda

 Listas
 Filas
 Pilhas
 Matrizes
 Árvores
 Grafos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 3 W W W. D O M I N A N D OT I .CO M . B R


Listas - Conceito

 Listas lineares: estruturas que preservam a ordem de


elementos do mesmo tipo
 Lista linear = arranjo ou lista encadeada

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 4 W W W. D O M I N A N D OT I .CO M . B R


Listas - Conceito

 Arranjos:
 Tamanho fixo
 Alocação contígua
 Acesso em tempo constante (O(1))

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 5 W W W. D O M I N A N D OT I .CO M . B R


Listas - Conceito

 Listas encadeadas:
 Tamanho variável
 Alocação dispersa
 Acesso em tempo linear (O(n))

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 6 W W W. D O M I N A N D OT I .CO M . B R


(INPI /2013/Cespe/desv./75)

( ) Na estrutura de dados do tipo lista, todo elemento novo que


é introduzido na pilha torna-se o elemento do topo.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 7 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/68,69,70 e 72) (1/2)

( ) O tempo de busca de um elemento em uma lista duplamente encadeada


é igual à metade do tempo da busca de um elemento em uma lista
simplesmente encadeada.
( ) Em algumas implementações, uma lista vazia pode ter um único nó,
chamado de sentinela, nó cabeça ou header. Entre suas possíveis funções,
inclui-se simplificar a implementação de algumas operações realizadas
sobre a lista, como inserir novos dados, recuperar o tamanho da lista, entre
outras.
( ) Estruturas ligadas como listas encadeadas superam a limitação das
matrizes que não podem alterar seu tamanho inicial.
( ) As listas duplamente encadeadas diferenciam-se das listas simplesmente
encadeadas pelo fato de, na primeira, os nós da lista formarem um anel com
o último elemento ligado ao primeiro da lista.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 8 W W W. D O M I N A N D OT I .CO M . B R


Exercício [1] (CESPE /EBC/2011)

( ) Uma lista é uma coleção de elementos do mesmo tipo


dispostos linearmente, que podem ou não seguir determinada
organização. As listas podem ser dos seguintes tipos: de
encadeamento simples, duplamente encadeadas e ordenadas.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 9 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas - Conceito

 Estruturas ligadas em sequência


 Referência para o primeiro nó (às vezes também para o
último)
 Cada nó possui uma (ou mais) informação e uma referência
para o próximo na lista (e para o anterior)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 10 W W W. D O M I N A N D OT I .CO M . B R


Exercício [2] (CESPE /ANAC /2009)

( ) Na situação em que o número de acessos randômicos


predomina sobre as inclusões e exclusões de elementos, a
implementação de uma estrutura de dados lista utilizando-se
array é mais eficiente que uma implementação encadeada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 11 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas - Implementações

 Linguagens procedurais: ponteiros


 Linguagens OO: referência a objetos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 12 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas – Implementação Estruturada

struct nodo {
int informacao;
struct nodo *proximoNodo;
};

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 13 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas – Implementação OO

public class Nodo {


private String informacao;
private Nodo proximo;
}

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 14 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas - Tipos

 Simplesmente encadeadas
 Duplamente encadeadas
 Circulares (simples ou dupla)
 Ordenadas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 15 W W W. D O M I N A N D OT I .CO M . B R


Listas Simplesmente Encadeadas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 16 W W W. D O M I N A N D OT I .CO M . B R


Listas Simplesmente Encadeadas - Inclusão

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 17 W W W. D O M I N A N D OT I .CO M . B R


Listas Simplesmente Encadeadas - Remoção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 18 W W W. D O M I N A N D OT I .CO M . B R


Listas Duplamente Encadeadas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 19 W W W. D O M I N A N D OT I .CO M . B R


Listas Duplamente Encadeadas - Inclusão

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 20 W W W. D O M I N A N D OT I .CO M . B R


Listas Duplamente Encadeadas - Remoção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 21 W W W. D O M I N A N D OT I .CO M . B R


Listas Encadeadas Circulares

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 22 W W W. D O M I N A N D OT I .CO M . B R


Exercício [3] (CESPE / FUB /2011)

( ) O uso de listas encadeadas na representação de matrizes


justifica-se, entre outros motivos, quando a matriz é
esparsamente povoada por dados. Em uma possível
implementação para esse caso, os valores dos índices de cada
dimensão da matriz são armazenados em listas encadeadas, e
cada elemento da matriz com valor diferente de zero é um nó
(ou célula) em outra lista encadeada, acessível a partir das
listas dos índices da matriz.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 23 W W W. D O M I N A N D OT I .CO M . B R


Exercício [3] (CESPE / FUB /2011)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 24 W W W. D O M I N A N D OT I .CO M . B R


Exercício [4] (CESPE / BASA /2010)

( ) Em uma lista encadeada, o tempo de acesso a qualquer um


de seus elementos é constante e independente do tamanho da
estrutura de dados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 25 W W W. D O M I N A N D OT I .CO M . B R


Filas (Queue) - Conceito

 First In First Out – FIFO (PEPS)


 Conceito simples: fila de banco
 Implementação mais comum: lista encadeada
 Inclui no início, retira no final

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 26 W W W. D O M I N A N D OT I .CO M . B R


Filas - Conceito

 Inclusão: enqueue (enfileirar)


 Remoção: dequeue (desenfileirar)
 Exemplo:
enqueue(11)
enqueue(35)
enqueue(2)
dequeue() // qual elemento foi retirado??

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 27 W W W. D O M I N A N D OT I .CO M . B R


(CNJ /2013/Cespe/Tec. Prog./91)

( ) Uma fila é uma estrutura de dados sujeita à seguinte regra


de operação: sempre que houver uma remoção, o elemento
removido será o que estiver na estrutura há mais tempo.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 28 W W W. D O M I N A N D OT I .CO M . B R


(INPI /2013/Cespe/desv./74)

( ) Em uma estrutura de dados do tipo pilha, o único elemento


que pode ser removido é o que está na base.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 29 W W W. D O M I N A N D OT I .CO M . B R


(TRE-RJ /2012/Cespe/Tec. Prog./63)

( ) As filas são estruturas com base no princípio LIFO (last in,


first out), no qual os dados que forem inseridos primeiro na fila
serão os últimos a serem removidos. Existem duas funções que
se aplicam a todas as filas: PUSH, que insere um dado no topo
da fila, e POP, que remove o item no topo da fila.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 30 W W W. D O M I N A N D OT I .CO M . B R


Filas Duplas (Deque) - Conceito

 Double-ended queue

 Elementos podem ser incluídos e removidos no início ou no fim


(cabeça e cauda)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 31 W W W. D O M I N A N D OT I .CO M . B R


Pilhas (Stack) - Conceito

 Last In First Out – LIFO (UEPS) ou First In Last Out – FILO


(PEUS)
 Conceito simples: pilha de pratos
 Implementação mais comum: lista encadeada
 Inclui no início, retira no início (ou inclui no fim, retira no fim)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 32 W W W. D O M I N A N D OT I .CO M . B R


Pilhas - Conceito

 Inclusão: PUSH (empilhar)


 Retirada: POP (desempilhar)
 Exemplo:
Push(3)
Push(74)
Push(23)
Pop() // qual elemento foi retirado??

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 33 W W W. D O M I N A N D OT I .CO M . B R


(CPRM/2013/Cespe/Sistemas/87)

( ) Se fosse implementado um algoritmo que simulasse o


movimento em uma rua sem saída, onde passa um carro de
cada vez, a fila seria a estrutura de dados que melhor
armazenaria as informações dos carros.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 34 W W W. D O M I N A N D OT I .CO M . B R


(TRE-MS /2013/Cespe/Tec. Prog./33)

Assinale a opção que apresenta uma estrutura de dados


embasada no princípio last in, first out (LIFO) — último a entrar,
primeiro a sair —, na qual, conforme a inserção, os dados
inseridos primeiramente na estrutura são os últimos a serem
removidos.
a) pilhas
b) árvores
c) vetores
d) listas
e) filas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 35 W W W. D O M I N A N D OT I .CO M . B R


Exercício [5] (CESPE / FUB /2011)

( ) As pilhas são listas encadeadas cujos elementos são


retirados e acrescentados sempre ao final, enquanto as filas são
listas encadeadas cujos elementos são retirados e
acrescentados sempre no início.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 36 W W W. D O M I N A N D OT I .CO M . B R


Exercício [6] (CESPE / TJES /2011)

( ) O armazenamento do tipo FIFO (first in, first out) é


encontrado na estrutura de dados do tipo pilha.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 37 W W W. D O M I N A N D OT I .CO M . B R


Exercício [7] (CESPE / EBC /2011)

( ) As pilhas, também conhecidas como listas LIFO ou PEPS,


são listas lineares em que todas as operações de inserção e
remoção de elementos são feitas por um único extremo da lista,
denominado topo.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 38 W W W. D O M I N A N D OT I .CO M . B R


Exercício [8] (CESPE / INMETRO /2010)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 39 W W W. D O M I N A N D OT I .CO M . B R


Exercício [8] (CESPE / INMETRO /2010)

Considere que, no trecho do programa acima, representado por


seu pseudocódigo, seja fornecido para num, sucessivamente,
os valores inteiros 1, 2, 3, 4, 5, 3 e 6. Nesse caso, ao final da
execução do programa, o valor de x será igual a
a) 2 e a pilha terá os valores 6, 4 e 1.
b) 3 e a pilha terá os valores 6, 4 e 1.
c) 5 e a pilha terá os valores 6, 4 e 1.
d) 3 e a pilha terá os valores 6, 5, 4, 2 e 1.
e) 5 e a pilha terá os valores 6, 3, 5, 4, 3, 2 e 1.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 40 W W W. D O M I N A N D OT I .CO M . B R


Exercício [9] (CESPE / ANAC /2009)

( ) Em uma implementação encadeada da estrutura de dados


pilha, as suas operações básicas de empilhar e desempilhar
elementos podem ter tempo de execução constante,
independentemente da quantidade de elementos que estejam
armazenados na estrutura no momento da sua execução.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 41 W W W. D O M I N A N D OT I .CO M . B R


Exercício [10] (CESPE / TRE-MT /2010) (1/2)

Considerando as definições de estruturas de dados e a


declaração tipo nó :: reg (dado: inteiro; próximo: ref nó), na qual
reg é um registro contendo os campos: dado, que guarda
valores inteiros, e próximo, que guarda endereço de outro nó,
assinale a opção correta.
a) O tipo nó é inadequado para implementar estruturas de
dados do tipo pilha.
b) As listas, pilhas, filas e árvores são estruturas de dados que
têm como principal característica a sequencialidade dos seus
elementos.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 42 W W W. D O M I N A N D OT I .CO M . B R


Exercício [10] (CESPE / TRE-MT /2010) (2/2)

c) Uma lista duplamente encadeada é uma lista em que o seu


último elemento referencia o primeiro.
d) O algoritmo para inclusão de elementos em uma pilha é
usado sem nenhuma alteração para incluir elementos em uma
lista.
e) O uso de recursividade é totalmente inadequado na
implementação de operações para manipular elementos de uma
estrutura de dados do tipo árvore.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 43 W W W. D O M I N A N D OT I .CO M . B R


Exercício [11] (CESPE / TRE-MA /2010)

A técnica LIFO (last in first out), utilizada em programação


estruturada, é fundamentada no conceito de
a) pilha.
b) loop.
c) fila.
d) ponteiro.
e) array.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 44 W W W. D O M I N A N D OT I .CO M . B R


Exercício [12] (CESPE / BASA /2010)

( ) Uma pilha pode ser considerada uma lista à qual foram


impostas restrições quanto à forma de manipulação dos dados
nela armazenados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 45 W W W. D O M I N A N D OT I .CO M . B R


Exercício [13] (CESPE / BASA /2010)

( ) Em um programa existe a necessidade de guardar todas as


alterações feitas em determinado dado para que seja possível
desfazer alterações feitas ao longo de toda a sua existência.
Nessa situação, a estrutura de dados mais adequada para o
armazenamento de todas as alterações citadas seria uma fila.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 46 W W W. D O M I N A N D OT I .CO M . B R


Matrizes – Conceito

 Arranjos multidimensionais
 Estruturas homogêneas (elementos tem o mesmo tipo)
 Acesso aos elementos se dá por meio de índices (um para
cada dimensão)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 47 W W W. D O M I N A N D OT I .CO M . B R


Matrizes – Conceito

 Vinculação de índices (subscritos): definição de domínio


 Java, C, C++: sempre iniciam com 0 (zero)
 Fortran: sempre iniciam com 1 (um)
 Outras linguagens: definidos pelo desenvolvedor

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 48 W W W. D O M I N A N D OT I .CO M . B R


Matrizes – Tipos

 Classificação por vinculação de índices (subscritos)


 Estática
 Fixa dinâmica na pilha
 Dinâmica na pilha
 Dinâmica no monte

Ref. Sebesta, Robert W. Conceitos de Linguagem de Programação.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 49 W W W. D O M I N A N D OT I .CO M . B R


Matrizes – Tipos

 Matriz Estática: domínio estaticamente definido, alocação


definida de forma estática (static)
 Matriz Fixa Dinâmica na Pilha: domínio estaticamente
definido, alocação realizada na declaração/inicialização da
matriz
 Matriz Dinâmica na Pilha: domínio definido de forma
dinâmica, alocação realizada de forma dinâmica
 Matriz Dinâmica no Monte (heap): mesmas características de
dinâmica na pilha, sendo que o domínio pode ser alterado
durante a execução
Ref. Sebesta, Robert W. Conceitos de Linguagem de Programação.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 50 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Conceito

 Estrutura hierárquica (não linear)


 Nós (nodos) e arestas
 Raiz, nós internos e folhas:
 Raiz: elemento inicial e central
 Nós internos: não são raiz e possui ao menos um filho
 Folhas: não são raiz e não possuem filhos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 51 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Conceito

 Cada nó possui uma (ou mais) informação e as referências


para os filhos
 Existe um único caminho entre quaisquer dois nodos na
estrutura
 Tipo especializado de grafo (toda árvore é um grafo, mas nem
todo grafo é uma árvore)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 52 W W W. D O M I N A N D OT I .CO M . B R


(Pefoce /2012/Cespe/Perito/83)

( ) Uma árvore consiste em um conjunto finito T com um ou


mais nós, de modo que existe um nó raiz e os demais formam
M >= 0 conjuntos disjuntos S1, S2, ..., Sm, em que cada um
desses conjuntos é uma árvore.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 53 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Conceito

Fonte: http://www.cs.auckland.ac.nz/software/AlgAnim/trees.html

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 54 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Propriedades

 Altura (nível): número de arestas da raiz até a folha mais


profunda
 Grau (ordem): número máximo de filhos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 55 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Busca

 Busca em extensão (breadth-first): visitar cada nível da árvore


da esquerda para a direita
 Busca em profundidade (depth-first): percorrer um “galho”
até chegar à folha

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 56 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias

 Cada nó tem, no máximo 2 filhos (grau/ordem 2)


 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 57 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias

 Árvore completa: todas os nós internos possuem dois filhos e


todas as folhas tem a mesma distância até a raiz
 Número de nós (árvore completa): 2n+1 – 1, onde n é a altura
(nível):
 Altura 0: 21 – 1 = 1
 Altura 1: 22 – 1 = 3
 Altura 2: 23 – 1 = 7
 Altura 3: 24 – 1 = 15

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 58 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias - Percorrimento

 Pré-ordem (pré-fixado): visita a raiz, visita a subárvore da


esquerda, visita a subárvore da direita
 Em ordem (infixado): visita a subárvore da esquerda, visita a
raiz, visita a subárvore da direita
 Pós-ordem (pós-fixado): visita a subárvore da esquerda, visita
a subárvore da direita, visita a raiz

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 59 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias - Percorrimento

 Pré-ordem (pré-fixado)

50 – 17 – 12 – 9 – 14 – 23 – 19 – 72 – 54 – 67 – 76

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 60 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias - Percorrimento

 Em ordem (infixado)

9 – 12 – 14 – 17 – 23 – 19 – 50 – 54 – 67 – 72 – 76

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 61 W W W. D O M I N A N D OT I .CO M . B R


Árvores Binárias - Percorrimento

 Pós-ordem (pós-fixado)

9 – 14 – 12 – 19 – 23 – 17 – 67 – 54 – 76 – 72 – 50

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 62 W W W. D O M I N A N D OT I .CO M . B R


(PF /2013/Cespe/Perito/79)

( ) Na árvore binária representada abaixo, o caminhamento


pós-fixado produzirá a seguinte sequência de nós visitados: D,
B, E, A, C, F.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 63 W W W. D O M I N A N D OT I .CO M . B R


(Pefoce /2012/Cespe/Perito/86)

( ) Denomina-se caminhamento em árvores o ato de percorrer


todos os nós da árvore com o objetivo de consultar ou alterar a
informação nele contida. O caminhamento pós-fixado na árvore
representada abaixo produz a sequência G, B, C, E, F, D, A.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 64 W W W. D O M I N A N D OT I .CO M . B R


Exercício [14] (CESPE / INMETRO /2010) (1/2)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 65 W W W. D O M I N A N D OT I .CO M . B R


Exercício [14] (CESPE / INMETRO /2010) (2/2)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 66 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Conceito

 Árvore binária
 Subárvore da esquerda contém elementos menores que a raiz
da subárvore
 Subárvore da direita contém elementos menores que a raiz da
subárvore

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 67 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Conceito

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 68 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Inserção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 69 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Inserção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 70 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Inserção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 71 W W W. D O M I N A N D OT I .CO M . B R


Árvores de Busca Binárias - Inserção

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 72 W W W. D O M I N A N D OT I .CO M . B R


Árvores AVL

 Árvore de busca binária balanceada


 Diferença de alturas entre a subárvore da esquerda e da
direita é no máximo 1
 Inclusão e remoção: necessitam de balanceamento

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 73 W W W. D O M I N A N D OT I .CO M . B R


Árvores AVL

ABB AVL

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 74 W W W. D O M I N A N D OT I .CO M . B R


Árvores - Balanceamento

 Uma árvore balanceada é aquela que possui a folhas no


mesmo nível
 Desbalanceada = degenerada
 Balanceamentos:
 Estático: cria a árvore do zero já balanceada
 Dinâmico: aproveita a estrutura da árvore e faz alterações na
inserção e remoção de elementos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 75 W W W. D O M I N A N D OT I .CO M . B R


(TJ-RO /2012/Cespe/Desv./37)

Assinale a opção em que é apresentado exemplo de estrutura


de informação do tipo abstrata, balanceada, não linear e com
relacionamento hierárquico.
a) lista duplamente encadeada
b) árvore binária
c) pilha
d) árvore AVL
e) deque

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 76 W W W. D O M I N A N D OT I .CO M . B R


(TRE-RJ /2012/Cespe/Tec. Prog./65)

( ) Na raiz de uma árvore balanceada, o número de


descendentes da esquerda e de descendentes da direita é igual.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 77 W W W. D O M I N A N D OT I .CO M . B R


(CPRM /2013/Cespe/Sistemas/88)

( ) A árvore representada na figura a seguir tem profundidade


igual a 4.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 78 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/56 a 61) (1/2)

Acerca do tipo de dados árvore, julgue os próximos itens.


( ) Quando não é possível prever antecipadamente quantos nós
serão necessários para a criação e utilização de uma árvore
binária, utilizam-se, na sua implementação, listas encadeadas.
( ) Uma árvore binária degenerada em lista encadeada não
pode ser balanceada.
( ) As operações de busca em uma árvore binária não a
alteram, enquanto operações de inserção e remoção de nós
provocam mudanças sistemáticas na árvore.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 79 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/56 a 61) (2/2)

( ) Heap é um tipo de dados que se baseia em árvores binárias


em que o balanceamento ocorre de maneira estática.
( ) O acréscimo de um elemento em um heap pode mudar o nó
raiz, dependendo do seu valor.
( ) O tipo de dados árvore representa organizações hierárquicas
entre dados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 80 W W W. D O M I N A N D OT I .CO M . B R


Exercício [15] (CESPE / TJES /2011)

( ) As árvores binárias possuem vantagens em relação às listas


encadeadas somente quando estão balanceadas, justificando-
se o uso de um método de balanceamento de uma árvore
binária quando elementos estão sendo constantemente
acrescidos e removidos da árvore.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 81 W W W. D O M I N A N D OT I .CO M . B R


Exercício [16] (CESPE / FUB /2011)

( ) O uso de árvores binárias visa tornar mais eficiente a busca


em arranjos de dados ordenados. No entanto, a eficiência de
uma árvore binária está diretamente relacionada ao seu
balanceamento, ou seja, à diferença entre as alturas das
subárvores à direita e à esquerda do nó raiz. O balanceamento
estático é recomendado se a árvore encontra-se degenerada
em uma lista encadeada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 82 W W W. D O M I N A N D OT I .CO M . B R


Exercício [17] (CESPE / TRT21 /2010)

( ) O caminhamento infixado em árvore binária compreende as


seguintes etapas: visitação à raiz, depois, à subárvore da
esquerda e, por último, à subárvore da direita.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 83 W W W. D O M I N A N D OT I .CO M . B R


Exercício [18] (CESPE / STN /2011)

( ) Enquanto uma lista encadeada somente pode ser percorrida


de um único modo, uma árvore binária pode ser percorrida de
muitas maneiras diferentes.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 84 W W W. D O M I N A N D OT I .CO M . B R


Exercício [19] (CESPE / DETRAN-ES /2010)

( ) Para transformar árvore em árvore binária, os nós irmãos


devem ser ligados entre si e a ligação entre um nó pai e os nós
filhos deve ser removida, incluindo-se os nós do primeiro filho.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 85 W W W. D O M I N A N D OT I .CO M . B R


Exercício [20] (CESPE / DETRAN-ES /2010)

( ) Denomina-se árvore binária a que possui apenas dois nós.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 86 W W W. D O M I N A N D OT I .CO M . B R


Exercício [21] (CESPE / BASA /2010)

( ) As árvores, cujas relações de hierarquia e composição entre


os dados são de subordinação, podem ser alocadas na memória
por adjacência ou encadeamento, ao contrário do que ocorre
com as listas lineares.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 87 W W W. D O M I N A N D OT I .CO M . B R


Exercício [22] (CESPE / ANAC /2009)

( ) A travessia em pré-ordem em árvore binária inicialmente


percorre a subárvore à esquerda (em pré-ordem), passa pela
raiz e finaliza na subárvore à direita (também em pré-ordem).

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 88 W W W. D O M I N A N D OT I .CO M . B R


Exercício [23] (CESPE / ANAC /2009)

( ) Uma árvore binária completa até o nível 10 tem 2.047 nós.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 89 W W W. D O M I N A N D OT I .CO M . B R


Exercício [24] (CESPE / ANAC /2009)

( ) Considerando-se uma árvore binária completa até o nível 5,


então a quantidade de folhas nesse nível será 24.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 90 W W W. D O M I N A N D OT I .CO M . B R


Exercício [25] (CESPE / TRE-AL / 2004)

( ) É possível manter, em uma estrutura de árvore, além dos


ponteiros normais de pais para filhos, ponteiros adicionais dos
filhos para os pais e ponteiros entre os irmãos, de modo a se ter
maior flexibilidade nos modos de percurso da árvore, embora
isso geralmente resulte em sobrecarga de armazenamento e de
processamento.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 91 W W W. D O M I N A N D OT I .CO M . B R


Exercício [26] Altura de árvores – Outras Bancas

Questão exemplo – FCC – TRE-PI – 2009


Uma árvore binária completa, estritamente binária, cuja raiz
está no nível 0 e a altura da árvore é 5, possui uma quantidade
de nós igual a
a) 63.
b) 62.
c) 32.
d) 31.
e) 30.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 92 W W W. D O M I N A N D OT I .CO M . B R


Exercício [27] Altura de árvores – ESAF (1/2)

Questão exemplo – ESAF – CGU – 2004


Analise as seguintes afirmações relativas a estruturas de dados:
I. Uma árvore binária qualquer de altura 3 tem no máximo 8 folhas.
II. Ao se transformar uma árvore genérica, formada apenas pela raiz e
seus quatro filhos, em uma árvore binária, a árvore resultante terá
apenas uma folha.
III. A única condição para uma árvore binária de pesquisa ser
considerada balanceada é que, para cada nó, a altura da sub-árvore da
esquerda seja igual à altura da sub-árvore da direita.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 93 W W W. D O M I N A N D OT I .CO M . B R


Exercício [27] Altura de árvores – ESAF (2/2)

IV. Uma árvore binária de pesquisa balanceada deve ter o


número de folhas igual ao número de nós.
Estão corretos os itens:
a) I e II
b) II e III
c) III e IV
d) I e III
e) II e IV

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 94 W W W. D O M I N A N D OT I .CO M . B R


Exercício [28] Altura de árvores – Contraexemplo
CESPE

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 95 W W W. D O M I N A N D OT I .CO M . B R


Altura de árvores – Bibliografia CESPE

Altura da árvore: número de nós entre a folha mais profunda até


a raiz (incluindo a raiz)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 96 W W W. D O M I N A N D OT I .CO M . B R


Grafos - Conceito

 Estruturas não-lineares
 Compostos de nodos (nós/vértices) e arestas (arcos)
 Podem ser ponderados ou não
 Dois tipos:
 Não Orientados: os nodos não possuem ordem na relação
 Orientados: os nodos possuem uma ordem em sua relação

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 97 W W W. D O M I N A N D OT I .CO M . B R


Grafos Não Orientados - Exemplo

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 98 W W W. D O M I N A N D OT I .CO M . B R


Grafos Orientados - Exemplo

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 99 W W W. D O M I N A N D OT I .CO M . B R


Grafos Ponderados - Exemplos

Fontes: http://www.informatics.susx.ac.uk/courses/dats/notes/html/node130.html e
http://www.algolist.net/Data_structures/Graph

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 100 W W W. D O M I N A N D OT I .CO M . B R


Grafos - Propriedades

 Grau de um nodo:
 Não orientado: número de arestas incidentes
 Orientado: soma de arestas que chegam e saem
 Comprimento do caminho: número de arestas entre dois
nodos
 Ciclos: caminhos maiores que 1 (um) que levam um nodo a
ele mesmo

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 101 W W W. D O M I N A N D OT I .CO M . B R


Grafos - Classificação

 Cíclico x acíclico
 Conexo (não orientado): todo par de nodos está conectado por
um caminho
 Fortemente conexo (orientado): para qualquer par de nodos é
possível encontrar um caminho entre eles
 Completo (não orientado): todo par de nodos é adjacente

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 102 W W W. D O M I N A N D OT I .CO M . B R


(CPRM /2012/Cespe/Sistemas/86)

( ) Considere que o grafo não orientado representado na figura


abaixo possua as seguintes características:
G1 = (V1, A1)
V1 = {A, B, C, D}
A1 = {(A, C), (A, D), (B, C), (B, D), (A,B)}.
Nesse caso, é correto afirmar que o grafo G1 possui quatro
vértices, nomeados de A, B, C e D, e cinco arcos, que conectam
pares de vértices, conforme especificado em A1.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 103 W W W. D O M I N A N D OT I .CO M . B R


(Pefoce /2012/Cespe/Perito/85)

( ) Considere que um grafo G seja constituído por um conjunto


(N) e por uma relação binária (A), tal que G = (N, A), em que os
elementos de N são denominados nós (ou vértices) e os
elementos de A são denominados arcos (ou arestas). Em face
dessas informações e do grafo abaixo, é correto afirmar que
esses conjuntos são N= {1,2,3,4} e A={(1,2),(2,1),(2,4),(2,3)}

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 104 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/An. Sistemas/60)

( ) Para modelar a rede que conecta todos os computadores


em uma sala de escritório com a menor metragem possível de
cabos, é adequado utilizar um grafo G cujos vértices
representem os possíveis pares (u, v) de computadores e cujas
arestas representem o comprimento dos cabos necessários
para ligar os computadores u e v, determinando-se o caminho
mínimo, que contenha todos os vértices de G, a partir de um
dado vértice v.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 105 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/An. Sistemas/62)

( ) É misto o grafo com arestas não dirigidas que representam


ruas de dois sentidos e com arestas dirigidas que
correspondem a trechos de um único sentido, modelado para
representar o mapa de uma cidade cujos vértices sejam os
cruzamentos ou finais de ruas e cujas arestas sejam os trechos
de ruas sem cruzamentos.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 106 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/51 a 55) (1/2)

Julgue os itens seguintes, relativos a grafos.


( ) A implementação de um grafo do tipo ponderado e
direcionado na forma de uma matriz de adjacência utiliza menor
quantidade de memória que a implementação desse mesmo
grafo na forma de uma lista encadeada.
( ) Um algoritmo que visita todos os vértices de um grafo, cada
um somente uma vez, está percorrendo o grafo. Esse algoritmo
pode percorrer o grafo em largura ou em profundidade.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 107 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/51 a 55) (2/2)

( ) Um grafo não direcionado é dito conectado quando há pelo


menos um caminho entre dois vértices quaisquer do grafo.
( ) Uma árvore de espalhamento de um grafo ponderado
conectado é mínima se a soma dos pesos de todas as arestas
for mínima.
( ) Um grafo completo contém pelo menos um subgrafo
ponderado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 108 W W W. D O M I N A N D OT I .CO M . B R


(TJ-RO /2012/Cespe/Desv./38)

Assinale a opção correta acerca de estruturas de informação.


a) A árvore, um tipo abstrato de dados que possui relacionamento do tipo pai-filho,
compõem-se de nós, grau e altura, sendo a inserção e a remoção de elementos
em uma árvore restritas à sua raiz.
b) Grafo corresponde a uma estrutura abstrata de dados que representa um
relacionamento entre pares de objetos e que pode armazenar dados em suas
arestas e vértices, ou em ambos.
c) Pilha é uma estrutura de informação abstrata cuja identificação é feita por meio
de uma linha e de uma coluna.
d) Visitas a sítios armazenadas em um navegador na ordem last-in-first-out é um
exemplo de lista.
e) Deque consiste em um contêiner de objetos armazenados em sequência, no
qual o acesso aos elementos restringe-se ao primeiro elemento da sequência.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 109 W W W. D O M I N A N D OT I .CO M . B R


(TRE-MS /2013/Cespe/An. Sistemas/48) (1/2)

Acerca de tipos básicos de estruturas de dados, assinale a


opção correta.
a) Uma estrutura do tipo pilha, também conhecida como stack,
permite que as operações sejam realizadas em seu topo a partir
do primeiro elemento inserido por meio de acesso FIFO (first in
first out).
b) Os grafos se assemelham às filas em termos de estrutura,
mas, enquanto nas filas as operações são realizadas no topo,
nos grafos elas podem ser realizadas tanto no início quanto no
fim da estrutura.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 110 W W W. D O M I N A N D OT I .CO M . B R


(TRE-MS /2013/Cespe/An. Sistemas/48) (2/2)

c) Nos grafos, devido à sua estrutura, não há operações


possíveis para a determinação de vértices adjacentes, somente
os vértices que estão no início (topo) e no fim (base) podem ser
determinados.
d) Nas estruturas do tipo árvores, as operações push( ) e pop( )
permitem retirar e inserir nós, respectivamente.
e) Árvores são grafos dirigidos mais específicos que os
acíclicos, em que existe um nó raiz a partir do qual os demais
vértices podem ser acessados e onde cada vértice, exceto o
raiz, possui apenas um nó antecessor.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 111 W W W. D O M I N A N D OT I .CO M . B R


Gabarito

(INPI /2013/Cespe/desv./75) errado [11] a [21] errado


(Basa /2012/Cespe/Adm. Dados/68,69,70 e [12] certo [22] errado
71) ecce [13] errado [23] certo
[01] certo (Pefoce /2012/Cespe/Perito/83) certo [24] errado
[02] certo (PF /2013/Cespe/Perito/79) errado [25] certo
[03] certo (Pefoce /2012/Cespe/Perito/86) errado [26] a
[04] errado [14] b [27] a
(CNJ /2013/Cespe/Tec. Prog./91) certo (TJ-RO /2012/Cespe/Desv./37) d [28] certo
(INPI /2013/Cespe/desv./74) errado (TRE-RJ /2012/Cespe/Prog./65) errado (CPRM /2012/Cespe/Sist./86) errado
(TRE-RJ /2012/Cespe/Prog./63) errado (Pefoce /2012/Cespe/Perito/85) – certo
(CPRM /2013/Cespe/Sistemas/88) certo
(CPRM/2013/Cespe/Sist./87) errado (Basa /2012/Cespe/Adm. Dados/56 a 61) (Basa /2012/Cespe/An. Sist./60) errado
(TRE-MS /2013/Cespe/Tec. Prog./33) cececc (Basa /2012/Cespe/An. Sist./62) certo
[05] errado [15] errado (Basa /2012/Cespe/Adm./51 a 55) eccce
[06] errado [16] certo (TJ-RO /2012/Cespe/Desv./38) b
[07] errado [17] errado (TRE-MS /2013/Cespe/An. Sist./48) e
[08] c [18] certo
[09] certo [19] errado
[10] d [20] errado

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 112 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de Algoritmos e ED

Professor Marcelo Pacote – marcelopacote@dominandoti.com.br

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Agenda (1/2)

 Complexidade de Algoritmos
 Algoritmos de Busca
 Busca sequencial
 Busca binária
 Busca com hash
 Algoritmos de Ordenação
 Insertion sort
 Bubble sort
 Shell sort
Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 114 W W W. D O M I N A N D OT I .CO M . B R
Agenda (2/2)

 Merge sort
 Quick sort
 Heapsort (heap)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 115 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Motivação

 Como avaliar se um algoritmo é mais rápido que outro


 Como avaliar qual algoritmo utiliza menos espaço
 Interesse: análise assintótica (pequenas entradas podem
“enganar”)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 116 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Motivação

 Tempo e espaço definidos como uma função com base no


tamanho da entrada do algoritmo (f(n))
 Quanto mais rápido o tempo/espaço cresce em função de n,
pior o algoritmo
 Tempo é o mais comum (alguns casos espaço é mais
importante)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 117 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Constante (1): o tempo/espaço não varia em função do


tamanho da entrada.
 Exemplo: inclusão e remoção de uma pilha.
 Não importa quantos elementos a pilha tenha, a
inclusão/remoção sempre levará o mesmo tempo

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 118 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Logarítmica (log2n): o tempo/espaço varia de forma


logarítmica em função do tamanho da entrada.
 Exemplo: percorrer uma árvore binária completa da raiz até a
folha
 Árvore binária com n elementos tem altura proporcional a
log2n

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 119 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Linear (n): o tempo/espaço varia linearmente em função do


tamanho da entrada.
 Exemplo: busca sequencial
 Arranjo de 10 posições tempo a1 * 10 + a2. Arranjo de 20
tempo a1 * 20 + a2. Arranjo de n tempo a1 * n + c2 (função
linear)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 120 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Linear * logarítmico (n log2n): o tempo/espaço varia numa


função linear vezes logarítmica do tamanho da entrada.
 Exemplo: merge sort

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 121 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Quadrático (n2): o tempo/espaço varia numa função


quadrática ao tamanho da entrada.
 Exemplo: bubble sort
 Ordenar um arranjo de 50 posições leva a1 * 502 + a2 * 50 +
a3 (função quadrática)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 122 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

 Exponencial (2n): o tempo/espaço varia numa função


exponencial ao tamanho da entrada.
 Exemplo: problemas NP

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 123 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 124 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 125 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos - Funções

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 126 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

public void metodoConstante(int arranjo[]) {


int y = arranjo.length + arranjo[1];
int z = y + 3;
System.out.println(y);
System.out.println(z);
}
 Análise: tempo independe do tamanho da entrada (tamanho
de arranjo).

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 127 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos (1/2)

public void metodoLogaritmico(int arranjo[]) {


int log = 0;
int divisaoInteira = arranjo.lenght;

while (divisaoInteira >= 2) {


divisaoInteira = divisaoInteira / 2;
log++;
}
}

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 128 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos (2/2)

 Análise: Se o tamanho da entrada for 4, executa 2 vezes a


iteração. Se o tamanho for 8, executa 3. Se 16, 4. Tempo varia
logaritmicamente em função do tamanho da entrada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 129 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

public void metodoLinear(int arranjo[]) {

int soma = 0;

for (int i = 0; i < arranjo.lenght / 2; i++) {

soma += arranjo[i];

double media = soma / arranjo.length;

double variancia = 0.0f;

for (i = 0; i < arranjo.lenght; i++) {

variancia += Math.pow(arranjo[i] – media, 2.0);

variancia = Math.sqrt(variancia/(arranjo.length-1));

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 130 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

 Análise: Método executa dois loops. Caso o tamanho de


arranjo seja n, executa n/2 + n = 3n/2. O algoritmo executa em
tempo que varia linearmente com o tamanho da entrada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 131 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

public void metodoLinearLogaritmico(int arranjo[]) {


/* metodo linear chamando a cada iteração o método
logarítmico */
}

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 132 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

public void metodoQuadratico(int arranjo[]) {


int somaMaluca = 0;
for (int i = 0; i < arranjo.lenght / 2; i++) {
for (int j = 0; j < arranjo.lenght / 4; j++) {
somaMaluca += arranjo[j] + arranjo[i];
}
}
}
 Análise: Método executa em tempo n/2 * n/4 = n2/8. Tempo varia em
função quadrática com relação ao tamanho da entrada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 133 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Exemplos

public void metodoCubico(int arranjo[]) {


int somaMaisDoidaAinda = 0;
for (int i = 0; i < arranjo.lenght / 2; i++) {
for (int j = 0; j < arranjo.lenght / 4; j++) {
for (int k = 0; k < arranjo.lenght; k++) {
somaMaisDoidaAinda += arranjo[j] +
arranjo[i] + arranjo[k];
}
}
}
}
Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 134 W W W. D O M I N A N D OT I .CO M . B R
Complexidade de algoritmos – Notações

 Notações O(g(n)), Θ(g(n)) e Ω(g(n))


 Notação O(g(n)) apresenta um limite superior para o
tempo/espaço (big “oh” notation)
 Notação Ω(g(n)) apresenta um limite inferior para o
tempo/espaço
 Notação Θ(g(n)) apresenta limites inferior e superior para o
tempo/espaço

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 135 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Definições formais

 Função f(n) é dita O(g(n)) caso existam c e n0 tal que, para n


> n0, c g(n) > f(n)

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 136 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Definições formais

 Função f(n) é dita Ω(g(n)) caso existam c e n0 tal que, para n


> n0, f(n) < c g(n)

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 137 W W W. D O M I N A N D OT I .CO M . B R


Complexidade de algoritmos – Definições formais

 Função f(n) é dita Θ(g(n)) caso existam c1, c2 e n0 tal que


para n > n0, c1 g(n) < f(n) < c2 g(n)

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 138 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca

 Busca sequencial
 Busca binária
 Buscas utilizando tabelas e funções de hash (dispersão)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 139 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Busca Sequencial

 Mais simples (espécie de força bruta)


 Percorre a lista linear em busca da chave a ser pesquisada
 Vantagens: não requer estruturas especiais ou ordenação.
Pode ser realizada em listas encadeadas.
 Desvantagens: ineficiente (complexidade O(n))

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 140 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Busca Binária

 Utiliza as vantagens de um arranjo ordenado ou árvore de


busca binária para pesquisar de forma mais inteligente
 Utilizando arranjos: simula busca numa árvore de busca
binária
 Vantagens: eficiente (complexidade O(log n))
 Desvantagens: necessita de estruturas ordenadas com
acesso randômico rápido

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 141 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Busca Binária

 Exemplo:

3 9 14 27 35 52 70 83 99

 Pesquisar: 9, 27, 80, 105


 E na busca sequencial???

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 142 W W W. D O M I N A N D OT I .CO M . B R


(CNJ /2013/Cespe/Tec. Prog./90)

( ) O método de busca mais rápido, em qualquer tipo de


arquivo, denomina-se pesquisa binária.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 143 W W W. D O M I N A N D OT I .CO M . B R


(TRE-MS /2013/Cespe/Tec. Prog./34) (1/2)

Considerando que se deseje efetuar uma pesquisa de um valor


sobre a chave primária de uma tabela de um banco de dados
com uma chave primária com um tipo de campo que receba um
valor inteiro e que se possa fazer essa pesquisa utilizando-se a
busca sequencial ou a busca binária, assinale a opção correta.
a) O método de busca binária requer, no máximo, ln(n)
comparações para determinar o elemento pesquisado, em que
n é o número de registros.
b) O método de busca binária será sempre mais rápido que o
método de busca sequencial, independentemente de a tabela
estar ordenada com base no elemento pesquisado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 144 W W W. D O M I N A N D OT I .CO M . B R


(TRE-MS /2013/Cespe/Tec. Prog./34) (2/2)

c) O método de busca sequencial requererá, no máximo, n2


comparações para determinar o elemento pesquisado, em que
n será o número de registros.
d) O método de busca binária sempre efetuará menos
comparações que o método de pesquisa sequencial.
e) O método de busca sequencial efetuará menos comparações
para encontrar o elemento pesquisado quando a tabela estiver
ordenada em comparação à situação quando a tabela estiver
desordenada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 145 W W W. D O M I N A N D OT I .CO M . B R


(TRE-RJ /2012/Cespe/Tec. Prog./64)

( ) Uma das formas mais simples e rápida de busca em uma


estrutura de dados ordenada é o método de pesquisa binária,
que segue o paradigma de divisão e conquista. Se o item
pesquisado estiver no meio do vetor, a busca termina com
sucesso. Caso contrário, se o elemento do meio vier antes do
elemento buscado, então a busca continua na metade posterior
e, se vier depois, a busca continua na metade anterior do vetor.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 146 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Buscas com Hash

 Utiliza funções e estruturas de dados especiais: tabela e


funções de dispersão (hash)
 Cada chave passa por uma função de hash para determinar
em que local da estrutura será armazenado
 Exemplo: f(x) = x mod 7. Chave 46 é armazenada na posição
4. Chave 191 na posição 2.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 147 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Buscas com Hash

 Possibilidade de colisões (21 mod 7 = 0, 70 mod 7 = 0)


 Tratamento de colisões:
 Por encadeamento: listas encadeadas para armazenar chaves
na mesma posição (complexidade O(n) na pesquisa)
 Por outra função de hash: outra função é utilizada de forma a
garantir que não haverá colisão (hashing perfeito, com
complexidade O(1) na pesquisa)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 148 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Buscas com Hash

 kn são os elementos a serem armazenados, enquanto h(k) é a


função de dispersão (hash) que calcula em que posição os
elementos (chaves) serão armazenados

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 149 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Buscas com Hash

 Resolução de colisões por encadeamento. Cada posição em


que é armazenado mais de um elemento possui uma lista
encadeada (tempo de pesquisa no pior caso O(n))

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 150 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Busca – Buscas com Hash

 Resolução de colisões com outra função de hash (hashing


perfeito). Funções são escolhidas de modo que a 2ª tabela não
permite colisões (tempo de pesquisa O(1)).

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 151 W W W. D O M I N A N D OT I .CO M . B R


Exercício [1] (CESPE / TRT21 /2010)

Considerando que uma tabela hash (tabela de espalhamento)


possua quatro posições numeradas 0, 1, 2, 3 e 4, e que nela
esteja armazenada uma sequência de quadrado de valores
inteiros definida como 1, 4, 9, 16, ., n2, segundo a função f (x)
= x mod 5, julgue os itens que se seguem.
( ) Na tabela hash apresentada, não haverá colisões em suas
posições.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 152 W W W. D O M I N A N D OT I .CO M . B R


Exercício [2] (MPE-PI /2012/Cespe/Analista/112)

( ) No uso de funções de hash, a resolução de colisões por


encadeamento utiliza uma lista para armazenar todos os
elementos que compartilham o mesmo valor de hash.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 153 W W W. D O M I N A N D OT I .CO M . B R


Exercício [3] (CESPE / FUB /2010)

( ) No uso de estruturas de transformação de chave (hashing), a


solução de colisões usando encadeamento tem como principal
característica o fato de nunca transbordar. Adicionalmente, o
tempo de busca na lista ligada pode ser reduzido se uma lista
duplamente encadeada for utilizada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 154 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/62 a 67) (1/2)

Com relação a métodos de pesquisa de dados, julgue os itens


subsecutivos.
( ) Listas encadeadas não são utilizadas na busca que emprega
tabelas hash.
( ) Um dicionário é um tipo abstrato de dados que permite as
operações de inserção e de retirada e o teste de pertinência de
elementos a um conjunto.
( ) A pesquisa sequencial e o método da bolha são métodos
pouco eficientes de busca de dados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 155 W W W. D O M I N A N D OT I .CO M . B R


(Basa /2012/Cespe/Adm. Dados/62 a 67) (2/2)

( ) A busca binária é realizada em um grupo de dados


previamente ordenado.
( ) A busca que utiliza uma tabela hash realiza comparação das
chaves para encontrar a posição do elemento que está sendo
buscado.
( ) As colisões ocorrem na utilização de tabela hash porque
várias chaves podem resultar na mesma posição.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 156 W W W. D O M I N A N D OT I .CO M . B R


(CPRM/2013/Cespe/Adm. Dados/90)

( ) A pesquisa binária, em relação à pesquisa sequencial,


possui a vantagem de executar menos comparações, em
média, para encontrar a chave procurada em uma lista
ordenada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 157 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação - Conceito

 Um dos problemas mais fundamentais da computação


 Colocar em ordem (crescente ou decrescente) um conjunto de
elementos (chaves) numa estrutura de dados (normalmente um
arranjo)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 158 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação

 Ordenação in place x out of place


 In place: requer espaço constante além da estrutura a ser
ordenada, ou seja, realiza a ordenação na própria estrutura
 Out of place: requer espaço extra não constante além da
estrutura que contém os elementos a serem ordenados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 159 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação

 Ordenação estável x instável


 Estável: ordem relativa de chaves iguais na estrutura é
mantida.
 Instável: ordem relativa de chaves iguais é alterado na
estrutura. Os elementos com chaves iguais podem ser
rearranjados e ficar fora da ordem original

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 160 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação

 Exemplo estabilidade: Ordenar a lista abaixo pelo primeiro


elemento (chave)
 (4, 2) (3, 7) (3, 1) (5, 6)
 (3, 7) (3, 1) (4, 2) (5, 6) (algoritmo estável)
 (3, 1) (3, 7) (4, 2) (5, 6) (algoritmo instável)

* Referência [02]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 161 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação

 Bubble Sort
 Insertion Sort
 Shell Sort
 Merge Sort
 Quick Sort
 Heapsort

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 162 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Bubble Sort

 Algoritmo simples: realiza trocas de elementos subjacentes


 A cada passagem, os elementos à direita já estão ordenados.
 Algoritmo ineficiente: quadrático até no caso médio

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 163 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Bubble Sort

 Exemplo de funcionamento:

* Referência [02]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 164 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Bubble Sort

 Melhor caso: arranjo já ordenado


 Pior caso: arranjo em ordem inversa
 Complexidade (pior caso): Θ (n2)
 Ordenação in place e estável

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 165 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

 Algoritmo de ordenação por inserção direta


 Semelhante à ordenação de cartas (alguém aí já jogou
buraco?)
 Da esquerda pra direita inclui os elementos na ordem,
rearranjando os elementos necessários (chaves ordenadas na
mão esquerda, desordenadas na direita)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 166 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 167 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 168 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 169 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 170 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 171 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 172 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Insertion Sort

 Melhor caso: arranjo já ordenado


 Pior caso: arranjo em ordem inversa
 Complexidade (pior caso): Θ (n2)
 Ordenação in place e estável
 Abordagem incremental

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 173 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Shell Sort (ou Shell’s)

 Melhoramento do algoritmo Insertion Sort


 Ao invés de comparar elementos ajdacentes, utiliza um gap
(salto) para realizar as comparações.
 Realiza várias passagens pela estrutura com os elementos.
 A última passagem, com gap 1, é o mesmo que executar o
algoritmo de ordenação por inserção direta

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 174 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Shell Sort

 Exemplo: gaps de 5, 2 e 1
30 27 22 9 58 13 75 62 2

 Gap 5: realiza o insertion sort no subvetor [30, 13]


13 27 22 9 58 30 75 62 2

 Gap 2: realiza o insertion sort no subvetor [13, 22, 58, 75, 2]


2 27 13 9 22 30 58 62 75

 Gap 1: realiza o insertion sort no vetor inteiro


2 9 13 22 27 30 58 62 75

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 175 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Shell Sort

 Melhor caso: depende dos gaps escolhidos (normalmente


arranjo já ordenado)
 Pior caso: depende dos gaps escolhidos (normalmente arranjo
em ordem inversa)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 176 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Shell Sort

 Complexidade (pior caso): complexo! Dependendo dos gaps


escolhidos pode ser Θ (n2), Θ (n3/2), Θ (n4/3), etc...
 Ordenação in place e instável
 Abordagem incremental

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 177 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

 Abordagem dividir para conquistar: divide recursivamente o


arranjo ao meio em outros dois já ordenados para depois
combinar os resultados (merge)
 Semelhante a dividir uma pilha de cartas ao meio e incluir os
menores de cada pilha numa pilha ordenada
 Ao finalizar uma pilha, o restante da outra pode ser toda
incluída no arranjo ordenado

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 178 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 179 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 180 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

 Análise de complexidade:
 Cada merge é proporcional ao
tamanho dos subarranjos (O(n))
 O arranjo é subdividido e
recombinado log n vezes
 Complexidade total log n * n,
ou seja, O(n log n)

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 181 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

 Melhor caso: arranjo já ordenado (imaginem um merge com


[1,2,3,4] e [5,6,7,8])
 Pior caso: quando sobra somente um em cada subarranjo em
cada merge (realiza todas as comparações)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 182 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Merge Sort

 Complexidade (pior caso): Θ (n log n)


 Ordenação out of place (a combinação é feita fora) e estável
 Abordagem dividir para conquistar (divide and conquer)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 183 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Algoritmo com abordagem dividir para conquistar (divide and


conquer)
 Passos:
 Escolhe um pivô
 Separa em dois subarranjos:
 O da esquerda com chaves menores que o pivô
 O da direita com chaves maiores que o pivô
 Realiza o quicksort nos subarranjos

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 184 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 185 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 186 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 187 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 188 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 189 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 190 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 191 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 192 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Exemplo:

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 193 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Quick Sort

 Complexidade (pior caso): Θ (n2)


 Melhor caso: pivôs escolhidos são os elementos centrais
 Pior caso: pivôs são os extremos, ou o maior ou o menor
elemento
 Ordenação in place e instável
 Abordagem dividir para conquistar

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 194 W W W. D O M I N A N D OT I .CO M . B R


(CPRM/2013/Cespe/Adm. Dados/92)

( ) No algoritmo de ordenação denominado quicksort, escolhe-


se um ponto de referência, denominado pivô, e separam-se os
elementos em dois grupos: à esquerda, ficam os elementos
menores que o pivô, e à direita ficam os maiores. Repete-se
esse processo para os grupos de elementos formados
(esquerda e direita) até que todos os elementos estejam
ordenados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 195 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Estrutura da dados auxiliar: heap


 Max-heap: árvore binária de busca onde todo elemento filho é
menor que o pai (raiz é o maior elemento)
 Chamadas a Max-heap a cada iteração para buscar os
elementos em ordem:
 1º passo: criar max-heap para todos os elementos
 2º passo: retirar a raiz (maior elemento)
 3º passo: rebalancear a árvore para que seja um novo max-
heap

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 196 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Representação do heap: arranjo representando árvore binária


 Regras para representação:
 Pai do nó na posição i é floor(i/2)
 Filho esquerdo de i é 2i
 Filho direito de i é 2i + 1

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 197 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heap como árvore binária e como arranjo

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 198 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 199 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 200 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 201 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 202 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 203 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 204 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 205 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 206 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 207 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 208 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Exemplo: heapsort em funcionamento

* Referência [01]

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 209 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Heapsort

 Melhor caso: arranjo já ordenado


 Pior caso: arranjo em ordem inversa
 Complexidade (pior caso): Θ (n log n)
 Ordenação in place e instável
 Abordagem dividir para conquistar (divide and conquer)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 210 W W W. D O M I N A N D OT I .CO M . B R


(CPRM/2013/Cespe/Adm. Dados/91)

( ) O algoritmo de ordenação heapsort refere-se ao processo de


divisão, ao meio, do grupo de elementos, repetindo-se a divisão
para cada um dos subgrupos, até que esses tenham apenas um
elemento. Nesse ponto, faz-se o reagrupamento dos subgrupos,
comparando os elementos e trocando-os, se necessário, para
que fiquem ordenados. Repete-se esse procedimento até restar
um só grupo de elementos.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 211 W W W. D O M I N A N D OT I .CO M . B R


Algoritmos de Ordenação – Complexidade

Algoritmo de busca Complexidade (pior caso)


Insertion Sort Θ(n2)
Bubble Sort Θ(n2)
Shell Sort Θ(n2)
Quicksort Θ(n2)
Mergesort Θ(n log n)
Heapsort O(n log n)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 212 W W W. D O M I N A N D OT I .CO M . B R


Exercício [4] (MPE-PI /2012/Cespe/Analista/113)

( ) O heapsort é um algoritmo de ordenação em que a


quantidade de elementos armazenada fora do arranjo de
entrada é constante durante toda a sua execução.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 213 W W W. D O M I N A N D OT I .CO M . B R


Exercício [5] (CESPE / ANAC /2009)

( ) A ordenação de um vetor contendo n elementos, utilizando-


se algoritmo de bolha, realiza, no pior caso, mais que n/2
comparações.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 214 W W W. D O M I N A N D OT I .CO M . B R


Exercício [6] (CESPE / ABIN /2010)

( ) A eficácia do método de ordenação rápida (quicksort)


depende da escolha do pivô mais adequado ao conjunto de
dados que se deseja ordenar. A situação ótima ocorre quando o
pivô escolhido é igual ao valor máximo ou ao valor mínimo do
conjunto de dados.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 215 W W W. D O M I N A N D OT I .CO M . B R


Exercício [7] (CESPE / ABIN /2010)

( ) A estrutura de dados heap, que é eficiente para a


implementação do método de ordenação heapsort, consiste em
uma árvore binária completa e sua implementação mais
simples ocorre na forma de array.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 216 W W W. D O M I N A N D OT I .CO M . B R


Exercício [8] (CESPE / FUB /2011)

( ) Os métodos de ordenação podem ser classificados como


estáveis ou não estáveis. O método é estável se preserva a
ordem relativa de dois valores idênticos. Alguns métodos
eficientes como shellsort ou quicksort não são estáveis,
enquanto alguns métodos pouco eficientes, como o método da
bolha, são estáveis.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 217 W W W. D O M I N A N D OT I .CO M . B R


Exercício [9] (CESPE / ABIN /2010)

( ) A estabilidade de um método de ordenação é importante


quando o conjunto de dados já está parcialmente ordenado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 218 W W W. D O M I N A N D OT I .CO M . B R


Exercício [10] (CESPE / BASA /2010)

Em relação à classificação de dados e tipos abstratos de dados


(TADs), julgue os itens subsequentes.
( ) A classificação interna por inserção é um método que
realiza a ordenação de um vetor por meio da inserção de cada
elemento em sua posição correta dentro de um subvetor
classificado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 219 W W W. D O M I N A N D OT I .CO M . B R


Exercício [11] (CESPE / BASA /2010)

( ) A pesquisa sequencial é aplicável em estruturas não


ordenadas.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 220 W W W. D O M I N A N D OT I .CO M . B R


Exercício [12] (CESPE / ALCE /2011)

( ) Considerando-se o número de comparações, a utilização


de busca binária é mais eficiente que a de busca linear, mesmo
que a busca binária somente funcione corretamente quando o
vetor está ordenado

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 221 W W W. D O M I N A N D OT I .CO M . B R


Exercício [13] (CESPE / PEFOCE /2012) (1/2)

( ) O procedimento Ordena, apresentado abaixo, no qual A é


um vetor e n é a quantidade de elementos nesse vetor,
implementa a lógica para classificar, em ordem decrescente, os
números do vetor A.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 222 W W W. D O M I N A N D OT I .CO M . B R


Exercício [13] (CESPE / PEFOCE /2012) (2/2)

procedimento Ordena(A,n)
inicio
para i de 1 ate n faca
j = i;
para k de j + 1 ate n faca
se A[k] < A[j] entao j = k;
fimpara
t = A[i]; A[i] = A[j]; A[j] = t;
fimpara
fimprocedimento

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 223 W W W. D O M I N A N D OT I .CO M . B R


Exercício [14] (CESPE / PEFOCE /2012)

( ) Para a classificação de grandes volumes de dados,


recomenda-se o emprego do método de inserção direta.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 224 W W W. D O M I N A N D OT I .CO M . B R


Exercício [15] (CESPE / MPU /2010)

( ) A pesquisa sequencial de uma tabela, ou seja, pela


comparação do argumento da pesquisa com a chave de cada
entrada, terá o desempenho reduzido se a tabela for ordenada a
partir do valor da chave.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 225 W W W. D O M I N A N D OT I .CO M . B R


Exercício [16] (CESPE / STM /2010)

int busca (int x, int n, int v[]) {


int j = 0;
while (j < n & v[j] < x) ++j;
return j;
}
Considerando o algoritmo acima, julgue os itens a seguir, a respeito de
estrutura de dados, métodos de busca e inserção e ordenação.
( ) O algoritmo em apreço realiza a pesquisa em um vetor de
tamanho n - 1, realizando n comparações nos elementos do vetor, no
melhor caso.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 226 W W W. D O M I N A N D OT I .CO M . B R


Gabarito

(CNJ/2013/Cespe/Tec. Prog./90) errado [11] certo


(TRE-MS /2013/Cespe/Tec. Prog./34) a [12] certo
(TRE-RJ /2012/Cespe/Tec. Prog./64) certo [13] errado
[01] errado [14] errado
[02] certo [15] errado
[03] errado [16] errado
(Basa /2012/Cespe/Adm. Dados/62 a 67) ececec
(CPRM/2013/Cespe/Adm. Dados/90) c
(CPRM/2013/Cespe/Adm. Dados/92) c
(CPRM/2013/Cespe/Adm. Dados/91) e
[04] certo
[05] certo
[06] errado
[07] certo
[08] certo
[09] errado
[10] certo

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 227 W W W. D O M I N A N D OT I .CO M . B R


Exercícios Complementares
Cesgranrio

Professor Marcelo Pacote – marcelopacote@dominandoti.com.br

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Exercício [1] (PETROBRAS / CESGRANRIO /2010)

O algoritmo de ordenação de pior complexidade temporal no


caso médio, dentre os que se seguem, é
a) Merge sort.
b) Bubble sort.
c) Heapsort.
d) Quicksort.
e) Binary tree sort.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 229 W W W. D O M I N A N D OT I .CO M . B R


Exercício [2] (PETROBRAS / CESGRANRIO /2010) (1/2)

Considere um vetor que contém uma lista ordenada de n dados.


Pressupondo que ainda haja espaço no vetor para um novo elemento, o
custo para inserir este novo elemento neste vetor sem afetar a ordenação
é:
a) O(1), pois basta inserir o novo elemento na primeira posição livre,
encontrada somando-se um à última posição ocupada do vetor.
b) O(1), pois pode-se fazer a inserção de forma recursiva, usando apenas
um teste e uma chamada para a própria rotina.
c) O(n), pois é necessário “deslocar” os elementos já inseridos a fim de
“criar espaço” para o novo elemento, o que pode ser feito com uma
estrutura de repetição simples.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 230 W W W. D O M I N A N D OT I .CO M . B R


Exercício [2] (PETROBRAS / CESGRANRIO /2010) (2/2)

d) O(n2), pois precisamos “deslocar” os elementos já inseridos


a fim de “criar espaço” para o novo elemento, o que pode ser
feito usando o algoritmo Bubblesort.
e) O(log n), pois, como o vetor já está ordenado, pode-se usar a
busca binária para achar a posição correta do novo elemento.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 231 W W W. D O M I N A N D OT I .CO M . B R


Exercício [3] (PETROBRAS / CESGRANRIO /2010)

Sendo n o número de nós de uma árvore AVL, a complexidade


temporal para buscar um elemento nesta árvore é
a) O(1)
b) O(log n)
c) (n)
d) (n log n)
e) (n2)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 232 W W W. D O M I N A N D OT I .CO M . B R


Exercício [4] (PETROBRAS / CESGRANRIO /2010) (1/2)

Relacione as operações apresentadas na coluna da esquerda com o


respectivo pior tempo de execução, entre os indicados na coluna da
direita.
Operação
I – Busca de elemento em vetor ordenado
II – Busca de elemento em lista simplesmente encadeada
III – Recuperação de predecessor do nó corrente em lista duplamente
encadeada
IV – Recuperação de predecessor do nó corrente em lista
simplesmente encadeada

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 233 W W W. D O M I N A N D OT I .CO M . B R


Exercício [4] (PETROBRAS / CESGRANRIO /2010) (2/2)

Pior tempo de Execução P – O(1) Q – O(n) R – O(log


n)
Estão corretas as associações
a) I - Q, II - Q, III - P, IV – P
b) I - Q, II - R, III - P, IV - Q
c) I - R, II - Q, III - P, IV – Q
d) I - R, II - Q, III - Q, IV - Q
e) I - R, II - R, III - Q, IV - P

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 234 W W W. D O M I N A N D OT I .CO M . B R


Exercício [5] (PETROBRAS / CESGRANRIO /2010)

Considere uma árvore binária de busca cujos nós armazenam


números inteiros variando de 1 a 100, na qual se quer buscar o
número 54. Qual das seguintes sequências representa uma
sequência de busca válida dentro desta árvore?
a) 5, 18, 34, 60, 40, 52, 54
b) 25, 27, 28, 26, 60, 50, 58, 54
c) 37, 70, 32, <não encontrou>
d) 40, 70, 43, 44, 73, 57, 54
e) 53, 45, 55, <não encontrou>

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 235 W W W. D O M I N A N D OT I .CO M . B R


Exercício [6] (PETROBRAS / CESGRANRIO /2010) (1/2)

Um programador precisa realizar buscas em um enorme cadastro


de pessoas (tamanho igual a n) armazenado na memória principal.
Para realizar um processo eficiente de busca, ele decidiu usar uma
árvore AVL e obteve um tempo de execução de ordem f. Um colega,
preocupado com a eficiência do processo de busca, sugeriu-lhe
que usasse um vetor com 10 árvores AVL, onde o índice da árvore
seria dado pelo último dígito do CPF de cada pessoa, dígito este que
é uniformemente distribuído. Assim, cada árvore teria
aproximadamente 1/10 do número de pessoas e o processo de
busca poderia ser mais eficiente.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 236 W W W. D O M I N A N D OT I .CO M . B R


Exercício [6] (PETROBRAS / CESGRANRIO /2010) (2/2)

Se o programador implementar a solução proposta pelo seu


colega, a ordem do tempo de execução do processo de busca
será
a) f
b) f /10
c) f / n
d) f / log210
e) f /10n

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 237 W W W. D O M I N A N D OT I .CO M . B R


Exercício [7] (FINEP / CESGRANRIO /2009)

Seja o seguinte vetor, ordenado de forma ascendente:

Caso se utilize um algoritmo de busca binária, quantas iterações serão


necessárias para que o valor 80 seja encontrado?
a) 2
b) 3
c) 4
d) 8
e) 9

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 238 W W W. D O M I N A N D OT I .CO M . B R


Exercício [8] (TRANSPETR / CESGRANRIO /2011)

O algoritmo Bubble Sort é popular, mesmo que ineficiente.


Usando-se esse algoritmo para ordenar uma tabela, alocada
sequencialmente, em ordem crescente contendo os números
[5, 4, 1, 3, 2] serão feitas:
a) 10 comparações e 8 trocas
b) 10 comparações e 9 trocas
c) 10 comparações e 10 trocas
d) 16 comparações e 9 trocas
e) 16 comparações e 10 trocas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 239 W W W. D O M I N A N D OT I .CO M . B R


Exercício [8] (TRANSPETR / CESGRANRIO /2011)

O algoritmo Bubble Sort é popular, mesmo que ineficiente.


Usando-se esse algoritmo para ordenar uma tabela, alocada
sequencialmente, em ordem crescente contendo os números
[5, 4, 1, 3, 2] serão feitas:
a) 10 comparações e 8 trocas
b) 10 comparações e 9 trocas [5, 4, 1, 3, 2] C (4) T (4)
[4, 1, 3, 2, 5] C (3) T (3)
c) 10 comparações e 10 trocas
[1, 3, 2, 4, 5] C (2) T (1)
d) 16 comparações e 9 trocas
[1, 2, 3, 4, 5] C (1) T (0)
e) 16 comparações e 10 trocas

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 240 W W W. D O M I N A N D OT I .CO M . B R


Exercício [9] (PETROBRAS / CESGRANRIO /2010) (1/2)

Os números 1,2,3,...,N foram inseridos de forma ordenada em


uma árvore binária de busca, em uma árvore AVL e em um
vetor para o qual foi decidido que a posição do número i seria
dada pelo índice i-1. Depois, sabendo-se que nenhuma inserção
posterior será realizada em nenhuma das três estruturas,
decidiu-se fazer uma busca em cada uma destas. Os tempos
que se podem obter para essa busca na árvore binária de
busca, na árvore AVL e no vetor são, respectivamente,

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 241 W W W. D O M I N A N D OT I .CO M . B R


Exercício [9] (PETROBRAS / CESGRANRIO /2010) (2/2)

a) O(log N), O(log N), O(N)


b) O(log N), O(log N), O(1)
c) O(log N), O(1), O(log N)
d) O(N), O(log N), O(log N)
e) O(N), O(log N), O(1)

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 242 W W W. D O M I N A N D OT I .CO M . B R


Exercício [10] (BNDES CESGRANRIO/2009)

Seja n o tamanho da entrada de um algoritmo para um problema


P. Cada alternativa, que corresponde a um algoritmo distinto,
apresenta o número de operações necessárias para resolver P.
Considerando-se a análise assintótica (Big O notation), qual
algoritmo possui menor complexidade?
a) 2 + 10log n
b) 3n2 + n
c) 1000 + 2n3
d) 5n + 128
e) 4n

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 243 W W W. D O M I N A N D OT I .CO M . B R


Exercício [11] (BNDES / CESGRANRIO /2009)

Uma fábrica de software foi contratada para desenvolver um


produto de análise de riscos. Em determinada funcionalidade
desse software, é necessário realizar a ordenação de um conjunto
formado por muitos números inteiros. Que algoritmo de
ordenação oferece melhor complexidade de tempo (Big O
notation) no pior caso?
a) Merge sort
b) Insertion sort
c) Bubble sort
d) Quick sort
e) Selection sort

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 244 W W W. D O M I N A N D OT I .CO M . B R


Gabarito

[01] b
[02] c
[03] b
[04] c
[05] a
[06] a
[07] b
[08] a
[09] e
[10] a
[11] a
Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 245 W W W. D O M I N A N D OT I .CO M . B R
Referências Bibliográficas

[01] Cormen, Leiserson, Rivest, Stein. Introduction to


Algorithms. Third Edition.
[02] Wikipedia. Acesso em 23/06/2012.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 246 W W W. D O M I N A N D OT I .CO M . B R


Exercícios Complementares
FCC

Professor Marcelo Pacote – marcelopacote@dominandoti.com.br

W W W. D O M I N A N D OT I .CO M . B R W W W. D O M I N A N D OT I .CO M . B R
Exercício [01] (TRE-SP / FCC /2012)

No que se refere a estruturas de dados é INCORRETO afirmar:


a) Numa fila dupla, os elementos podem ser inseridos e removidos de
qualquer um dos extremos da fila.
b) Em qualquer situação é possível usar uma única fila dupla para
representar duas filas simples.
c) A implementação de uma fila dupla normalmente é mais eficiente com
uma lista duplamente encadeada que com uma encadeada simples.
d) Pela definição de fila, se os elementos são inseridos por um extremo da
lista linear, eles só podem ser removidos pelo outro.
e) Numa lista singularmente encadeada, para acessar o último nodo é
necessário partir do primeiro e ir seguindo os campos de ligação até chegar
ao final da lista.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 248 W W W. D O M I N A N D OT I .CO M . B R


Exercício [02] (TRE-CE /FCC /2012)

Sobre pilhas é correto afirmar:


a) Uma lista LIFO (Last-In/First-Out) é uma estrutura estática, ou seja, é uma
coleção que não pode aumentar e diminuir durante sua existência.
b) Os elementos na pilha são sempre removidos na mesma ordem em que foram
inseridos.
c) Uma pilha suporta apenas duas operações básicas, tradicionalmente
denominadas push (insere um novo elemento no topo da pilha) e pop (remove um
elemento do topo da pilha).
d) Cada vez que um novo elemento deve ser inserido na pilha, ele é colocado no
seu topo e, em qualquer momento, apenas aquele posicionado no topo da pilha
pode ser removido.
e) Sendo P uma pilha e x um elemento qualquer, a operação Push(P,x) diminui o
tamanho da pilha P, removendo o elemento x do seu topo.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 249 W W W. D O M I N A N D OT I .CO M . B R


Exercício [03] (TRT-19ª (AL) / FCC /2011)

FIFO refere-se a estruturas de dados do tipo


a) fila.
b) árvore binária.
c) pilha.
d) matriz quadrada.
e) cubo.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 250 W W W. D O M I N A N D OT I .CO M . B R


Exercício [04] (TRT-8ª (PA e AP) / FCC /2010)

A estrutura de dados linear que obedece o seguinte critério: o


último elemento inserido será o primeiro elemento a ser retirado
(last in first out - LIFO) é:
a) pilha.
b) fila.
c) árvore binária.
d) árvore AVL.
e) lista circular.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 251 W W W. D O M I N A N D OT I .CO M . B R


Exercício [05] (TRT-22ª (PI) / FCC /2010)

Uma fila duplamente terminada, isto é, uma estrutura linear que


permite inserir e remover de ambos os extremos é chamada
a) Árvore.
b) Shift-and.
c) Autômato.
d) Deque.
e) Boyer-Moore.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 252 W W W. D O M I N A N D OT I .CO M . B R


Exercício [06] (MPE-RN / FCC /2010)

Último dado armazenado é o primeiro a ser recuperado


caracteriza a estrutura de dados do tipo
a) árvore.
b) pilha.
c) string.
d) fila.
e) boolean.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 253 W W W. D O M I N A N D OT I .CO M . B R


Exercício [07] (TJ-PI / FCC /2009) (1/2)

Uma lista ligada é uma estrutura que corresponde a uma sequência


lógica de entradas ou nós. Cada nó armazena a localização do próximo
elemento na sequência, ou seja, de seu nó sucessor. Nessa estrutura,
a) para estabelecer a ligação entre um nó já pertencente a uma lista e
um novo nó, basta fazer com que o novo nó referencie no, campo next,
o nó que anteriormente era referenciado pelo nó original, desde que
esse campo não tenha o valor nulo.
b) a existência de um ponteiro apontando para o 1º elemento e outro
para o fim da lista permite que a inserção ou deleção de dados de um
nó que esteja no meio da lista seja rapidamente executada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 254 W W W. D O M I N A N D OT I .CO M . B R


Exercício [07] (TJ-PI / FCC /2009) (2/2)

c) enquanto a entrada que determina o topo da lista é mantida


em um nó descritor dessa lista, a entrada que marca o fim da
lista é mantida fora do descritor.
d) o armazenamento de uma lista requer uma área contígua de
memória para permitir a otimização no processamento de
criação e remoção de nós da lista.
e) o armazenamento de uma lista não requer uma área contígua
de memória. Como listas são estruturas dinâmicas,
normalmente são definidos procedimentos que permitem criar e
remover nós na memória.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 255 W W W. D O M I N A N D OT I .CO M . B R


Exercício [08] (TRT-4ª (RS) / FCC /2011)

No contexto das vinculações de subscritos e categorias de


matrizes, NÃO se inclui como uma categoria a matriz
a) estática.
b) dinâmica na pilha.
c) associativa.
d) fixa dinâmica na pilha.
e) dinâmica no monte.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 256 W W W. D O M I N A N D OT I .CO M . B R


Exercício [09] (TRT-9ª (PR) / FCC /2010)

É uma estrutura de dados dividida em linhas e colunas. Desta


forma, pode-se armazenar diversos valores dentro dela. Para
obter um valor é necessário identificá-lo por meio do número da
linha e da coluna onde está armazenado. Trata-se de
a) árvore.
b) matriz.
c) pilha.
d) fita.
e) deque.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 257 W W W. D O M I N A N D OT I .CO M . B R


Exercício [10] (TRT-18ª (GO) / FCC /2008)

Árvore AVL balanceada em altura significa que, para cada nó da


árvore, a diferença entre as alturas das suas sub- árvores
(direita e esquerda) sempre será
a) menor ou igual a 2.
b) igual a 0 ou -1.
c) maior que 1.
d) igual a 1.
e) igual a -1, 0 ou 1.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 258 W W W. D O M I N A N D OT I .CO M . B R


Exercício [11] (TRE-PI / FCC /2009)

Uma árvore binária completa, estritamente binária, cuja raiz


está no nível 0 e a altura da árvore é 5, possui uma quantidade
de nós igual a
a) 63.
b) 62.
c) 32.
d) 31.
e) 30.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 259 W W W. D O M I N A N D OT I .CO M . B R


Exercício [12] (MPE-SE / FCC /2010) (1/2)

Em uma árvore ordenada, um elemento pode ser eliminado


colocando-se em seu lugar o
I. maior elemento da sub-árvore à esquerda do elemento a
eliminar.
II. menor elemento da sub-árvore à direita do elemento a
eliminar.
III. elemento vazio, da sub-árvore à esquerda do elemento a
eliminar.
IV. elemento vazio, da sub-árvore à direita do elemento a
eliminar.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 260 W W W. D O M I N A N D OT I .CO M . B R


Exercício [12] (MPE-SE / FCC /2010) (2/2)

É correto o que se afirma APENAS em


a) I, II e IV.
b) I e II.
c) I, III e IV.
d) I, II e III.
e) III e IV.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 261 W W W. D O M I N A N D OT I .CO M . B R


Exercício [13] (TRE-CE / FCC /2012) (1/2)

Com relação a árvores binárias é INCORRETO afirmar:


a) Uma árvore binária é uma coleção finita de n>0 nodos que
não pode ser nula.
b) Uma árvore binária, cuja raiz armazena o elemento R, é
denominada árvore de busca binária se todo elemento
armazenado na subárvore esquerda é menor que R, nenhum
elemento armazenado na subárvore direita é menor que R e as
subárvores esquerda e direita também são árvores de busca
binária.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 262 W W W. D O M I N A N D OT I .CO M . B R


Exercício [13] (TRE-CE / FCC /2012) (2/2)

c) É um caso especial de árvore em que nenhum nodo tem grau


superior a 2, isto é, nenhum nodo tem mais que dois filhos.
d) Existe um nodo especial denominado raiz e os demais nodos
são particionados em T1 e T2 estruturas disjuntas de árvores
binárias. T1 é denominado subárvore esquerda e T2 subárvore
direita da raiz.
e) É uma árvore que pode ser nula.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 263 W W W. D O M I N A N D OT I .CO M . B R


Exercício [14] (MPE-RN / FCC /2010)

Uma árvore binária completa tem, no 5º nível, uma quantidade


de nós igual a
a) 31
b) 32
c) 64
d) 15
e) 16

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 264 W W W. D O M I N A N D OT I .CO M . B R


Exercício [15] (TJ-SE / FCC /2009)

O nível 5 de uma árvore binária completa tem


a) 16 nós, na quarta camada.
b) 16 nós, na quinta camada.
c) 32 nós, na quinta camada.
d) 32 nós, na sexta camada.
e) 64 nós, na sexta camada.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 265 W W W. D O M I N A N D OT I .CO M . B R


Exercício [16] (TRF-4ª / FCC /2010)

Sobre árvores, considere:


I. O número de subárvores de um nodo denomina-se grau.
II. Uma árvore binária não pode ser nula.
III. Toda árvore, inclusive as nulas, possui um nodo especial denominado raiz.
Está correto o que consta em
a) I, apenas.
b) I, II e III.
c) I e II, apenas.
d) I e III, apenas.
e) III, apenas.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 266 W W W. D O M I N A N D OT I .CO M . B R


Exercício [17] (TRT-19ª (AL) / FCC /2011)

Em uma árvore binária, todos os nós têm grau


a) 2.
b) 0, 1 ou 2.
c) divisível por 2.
d) maior ou igual a 2.
e) 0 ou 1.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 267 W W W. D O M I N A N D OT I .CO M . B R


Exercício [18] (TCE-AL / FCC /2008)

Quando se elimina o nó raiz de uma estrutura em árvore, o que


dela restar forma
a) outra árvore.
b) uma floresta.
c) uma árvore binária.
d) uma sub-árvore.
e) um conjunto de sub-árvores.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 268 W W W. D O M I N A N D OT I .CO M . B R


Exercício [19] (TRE-RN / FCC /2011)

Uma estrutura de dados onde cada nó mantém uma informação


adicional, chamada fator de balanceamento, que indica a
diferença de altura entre as subárvores esquerda e direita, é
conhecida por árvore
a) hiberbólica.
b) de busca binária.
c) ordenada.
d) AVL.
e) binária.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 269 W W W. D O M I N A N D OT I .CO M . B R


Exercício [20] (TCE-AP / FCC /2012)

Um grafo consiste num conjunto de nós (ou vértices) e num


conjunto de arcos (ou arestas). É correto afirmar que o grau de um
nó é
a) o número de arcos incidentes nesse nó.
b) um número associado ao arco, também chamado de peso.
c) a distância entre este nó e um outro nó qualquer do grafo.
d) a posição deste nó em relação ao nó raiz do grafo
e) o número de pares ordenados que formam o arco.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 270 W W W. D O M I N A N D OT I .CO M . B R


Exercício [21] (TRT-11ª (AM) / FCC /2012)

Um grafo é uma estrutura de dados consistida em um conjunto


de nós (ou vértices) e um conjunto de arcos (ou arestas). O
grafo em que os arcos possuem um número ou peso associados
a eles, é chamado de grafo
a) predecessor.
b) adjacente.
c) incidente.
d) ponderado.
e) orientado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 271 W W W. D O M I N A N D OT I .CO M . B R


Exercício [22] (METRÔ-SP / FCC /2010)

É uma noção simples, abstrata e intuitiva, usada para


representar a ideia de alguma espécie de relação entre os
objetos. Graficamente, aparece representado por uma figura
com nós ou vértices. Trata-se dos
a) objetos geométricos.
b) triângulos.
c) grafos.
d) dados.
e) registros.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 272 W W W. D O M I N A N D OT I .CO M . B R


Exercício [23] (METRÔ-SP / FCC /2008)

No grafo exibido, o caminho v1, v2, v4, v3 tem comprimento


igual a
a) 6.
b) 5.
c) 4.
d) 3.
e) 2.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 273 W W W. D O M I N A N D OT I .CO M . B R


Exercício [24] (METRÔ-SP / FCC /2008)

O grafo representado é um grafo


a) conexo.
b) fortemente conexo.
c) não orientado.
d) parcial.
e) isolado.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 274 W W W. D O M I N A N D OT I .CO M . B R


Exercício [25] (TRT-11ª (AM) / FCC /2012)

A estrutura de dados chamada grafo consiste num conjunto de


nós (ou vértices) e num conjunto de arcos (ou arestas). Cada arco
em um grafo é especificado por um par de nós. Se os pares de
nós que formam o arco forem pares ordenados, diz-se que o
grafo é
a) incidente.
b) ponderado.
c) adjacente.
d) orientado.
e) sucessor.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 275 W W W. D O M I N A N D OT I .CO M . B R


Exercício [26] (TCE-PR / FCC /2011)

É um tipo de estrutura de dados em que a função de dispersão


é a responsável por gerar um índice a partir de determinada
chave; por causa das colisões, muitas tabelas de dispersão são
aliadas com alguma outra estrutura de dados:
a) vetores.
b) matrizes.
c) listas encadeadas.
d) tabela hash.
e) sort.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 276 W W W. D O M I N A N D OT I .CO M . B R


Exercício [27] (TRF-5ª / FCC /2010)

Vetores associativos, caches e sets


a) especificam a profundidade de um nó nas árvores binárias (distância
de um nó até a raiz).
b) são tipicamente implementados por tabelas hash, usadas na
indexação de grandes volumes de dados.
c) especificam as ordens de grandeza em uma estrutura DEQUE.
d) são elementos especificados no modelo conceitual de dados.
e) devem ser especificados pelos usuários de bancos de dados durante
o projeto lógico

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 277 W W W. D O M I N A N D OT I .CO M . B R


Exercício [28] (TRT-14ª (RO e AC) / FCC /2011) (1/2)

Considere:
I. Estrutura de dados linear e estática, composta por um número finito de
elementos de um determinado tipo de dados.
II. É linear e dinâmica quando encadeada; apresenta um campo para
conter o dado a ser armazenado e outro campo para apontar para o
próximo elemento.
III. Os elementos associados a cada nó são habitual- mente chamados de
filhos desses nós, podendo existir nós sem filhos.
IV. É tipicamente uma representação de vértices ligados por arestas que
eventualmente, podem ser direcionadas por meio de setas.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 278 W W W. D O M I N A N D OT I .CO M . B R


Exercício [28] (TRT-14ª (RO e AC) / FCC /2011) (2/2)

Em relação às estruturas de dados, é correto afirmar que os


itens I, II, III e IV estão associados, respectivamente, a
a) lista, fila, pilha e vetor.
b) fila, vetor, grafo e árvore.
c) vetor, lista, árvore e grafo.
d) lista, fila, grafos e tabela de hashing.
e) fila, vetor, árvore e tabela de hashing.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 279 W W W. D O M I N A N D OT I .CO M . B R


Exercício [29] (TRE-AM / FCC /2010) (1/2)

As coleções de dados podem ser classificadas em estruturas


lineares e estruturas não lineares. Nesse contexto, é correto afirmar
que
a) a fila de prioridade é uma versão especial da fila, uma estrutura
não linear. Quando se retira um elemento desta estrutura é
selecionado aquele que tem maior prioridade, tendo portanto a
ordenação do tipo FIFO.
b) a lista é uma estrutura linear cuja implementação pode ser feita
por meio de lista ligada em que as estruturas são estáticas ou
através de um array para permitir que as estruturas sejam ligadas
dinamicamente.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 280 W W W. D O M I N A N D OT I .CO M . B R


Exercício [29] (TRE-AM / FCC /2010) (2/2)

c) na pilha, uma estrutura não linear, os elementos são colocados e


retirados por um único lado da lista, ou seja, pelo topo, que é alterado
sempre que um elemento é adicionado ou retirado da pilha. É um tipo de
estrutura que tem a ordenação do tipo LILO.
d) na tabela de Hash a chave é transformada num índice inteiro que é
usado para acessar os dados. A chave pode ser um string, desde que haja
uma função que transforme essa chave num inteiro. É uma estrutura
linear.
e) tendo uma estrutura não linear, um array dinâmico é criado usando
técnicas de alocação e gestão dinâmica de memória. Pode ser
redimensionado e é alocado durante o tempo de compilação.

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 281 W W W. D O M I N A N D OT I .CO M . B R


Gabarito

[01] b [11] a [21] d


[02] d [12] b [22] c
[03] a [13] a [23] d
[04] a [14] e [24] b
[05] d [15] d [25] d
[06] b [16] a [26] d
[07] e [17] b [27] b
[08] c [18] b [28] c
[09] b [19] d [29] d
[10] e [20] a

Professor Marcelo Pacote - marcelopacote@dominandoti.com.br 282 W W W. D O M I N A N D OT I .CO M . B R