Professional Documents
Culture Documents
Estrutura de dados
Rodrigo Adur
rodrigoadurti@gmail.com
Apresentao
Formao
Bacharelado em Sistemas de Informaes (FILC)
Especialista em Sistemas de Informaes (NCE/UFRJ)
Experincia Profissional
Desenvolvimento de Sistemas
Desenvolvimento de biblioteca de componentes
Desenvolvimento de framework
Analista de Sistemas do SERPRO
Arquiteto
Lder tcnico
Programador
Mdulo I
Conceitos Bsicos
Complexidade de Algoritmos
Arrays
Recursividade
Pesquisas em Vetores
Busca Sequencial
Busca Binria
Algoritmos de Ordenao
Bubble Sort
Selection Sort
Insertion Sort (Insero Direta)
Heap Sort
Merge Sort
Quick Sort
01 Errado 03 E
02 Certo 04 Errado
Aumento da complexidade
(+)
()
Diminuio da complexidade
(A) 2 + 10logn
(B) 3n2 + n
(C) 1000 + 2n3
(D) 5n + 128
(E) 4n
- Algoritmo A: O(log n)
- Algoritmo B: O(n2)
- Algoritmo C: O(n . log n)
n n2
n
05 A 08 C
06 D 09 C
07 A
ndices
Tamanho: 10
ndices
Definindo vetores:
inteiros[2][3]
10 Errado
11 Errado
12 Certo
13 - B
120
fatorialRecursivo( 5 )
[1] 120
[2] Stack Memory
5 * fatorialRecursivo( 4 ) [1] [2] [3] [4] [5]
24
[3]
4 * fatorialRecursivo( 3 )
[4] 6
3 * fatorialRecursivo( 2)
[5] 2
2 * fatorialRecursivo( 1 )
1
Algoritmos e Estruturas de dados Rodrigo Adur
Recursividade
Implementao do fatorial de forma no recursiva
Se X for um vetor com os elementos [1, 2, 4, 8, 16, 32, 64, 128], a chamada da
funo func(X,2,6) retornar o valor 62.
Certo Errado
func( X, 2, 6 )
62
2 + func( X, 3, 6 )
60
4 + func( X, 4, 6 )
56
8 + func( X, 5, 6 )
48
16 + func( X, 6, 6 )
32
Se X for um vetor com os elementos [1, 2, 4, 8, 16, 32, 64, 128], a chamada da
funo func(X,2,6) retornar o valor 62.
Certo Errado
14 E
15 Certo
16 Certo
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 1
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 2
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 3
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 4
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 5
10 5 38 8 2 40 1
0 1 2 3 4 5 6
Comparao 6
1 2 5 8 10 38 40 indiceEsq = 0
0 1 2 3 4 5 6 indiceDir = 6
indiceMeio (Comparao 1)
1 2 5 8 10 38 40 indiceEsq = 0 4
0 1 2 3 4 5 6 indiceDir = 6
indiceMeio (Comparao 2)
1 2 5 8 10 38 40 indiceEsq = 0 4 6
0 1 2 3 4 5 6 indiceDir = 6
indiceMeio (Comparao 3)
Uma das formas mais simples e rpida de busca em uma estrutura de dados
ordenada o mtodo de pesquisa binria, que segue o paradigma de diviso e
conquista. Se o item pesquisado estiver no meio do vetor, a busca termina com
sucesso. Caso contrrio, se o elemento do meio vier antes do elemento buscado,
ento a busca continua na metade posterior e, se vier depois, a busca continua na
metade anterior do vetor.
Certo Errado
Uma das formas mais simples e rpida de busca em uma estrutura de dados
ordenada o mtodo de pesquisa binria, que segue o paradigma de diviso e
conquista. Se o item pesquisado estiver no meio do vetor, a busca termina com
sucesso. Caso contrrio, se o elemento do meio vier antes do elemento buscado,
ento a busca continua na metade posterior e, se vier depois, a busca continua na
metade anterior do vetor.
Certo Errado
indiceMeio (Iterao 1)
indiceMeio (Iterao 2)
indiceMeio (Iterao 3)
(A) 2
(B) 3
(C) 4
(D) 8
(E) 9
17 Certo 21 Errado
18 Errado 22 Certo
19 E 23 B
20 Certo
[Iterao 1 / inicio]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5
ndice
[Iterao 1 / comparao 1]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5
ndice
[Iterao 1 / comparao 2]
4 6 8 1 5 2 Posio menor valor: 0
0 1 2 3 4 5
ndice
[Iterao 1 / comparao 3]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 1 / comparao 4]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 1 / comparao 5]
4 6 8 1 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
Troca
[Iterao 1 / final]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 2 / inicio]
1 6 8 4 5 2 Posio menor valor: 1
0 1 2 3 4 5
ndice
[Iterao 2 / comparao 1]
1 6 8 4 5 2 Posio menor valor: 1
0 1 2 3 4 5
ndice
[Iterao 2 / comparao 2]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 2 / comparao 3]
1 6 8 4 5 2 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 2 / comparao 4]
1 6 8 4 5 2 Posio menor valor: 5
0 1 2 3 4 5
ndice
Troca
[Iterao 2 / final]
1 2 8 4 5 6 Posio menor valor: 5
0 1 2 3 4 5
ndice
[Iterao 3 / inicio]
1 2 8 4 5 6 Posio menor valor: 2
0 1 2 3 4 5
ndice
[Iterao 3 / comparao 1]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 3 / comparao 2]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 3 / comparao 3]
1 2 8 4 5 6 Posio menor valor: 3
0 1 2 3 4 5
ndice
Troca
[Iterao 3 / final]
1 2 4 8 5 6 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 4 / inicio]
1 2 4 8 5 6 Posio menor valor: 3
0 1 2 3 4 5
ndice
[Iterao 4 / comparao 1]
1 2 4 8 5 6 Posio menor valor: 4
0 1 2 3 4 5
ndice
[Iterao 4 / comparao 2]
1 2 4 8 5 6 Posio menor valor: 4
0 1 2 3 4 5
ndice
Troca
[Iterao 4 / final]
1 2 4 5 8 6 Posio menor valor: 4
0 1 2 3 4 5
ndice
[Iterao 5 / inicio]
1 2 4 5 8 6 Posio menor valor: 4
0 1 2 3 4 5
ndice
[Iterao 5 / comparao 1]
1 2 4 5 8 6 Posio menor valor: 5
0 1 2 3 4 5
ndice
Troca
[Iterao 5 / final]
1 2 4 5 6 8 Posio menor valor: 5
0 1 2 3 4 5
ndice
1 2 4 5 6 8
0 1 2 3 4 5
[Iterao 1 / comparao 1]
4 6 8 1 5 2
0 1 2 3 4 5
j i
[Iterao 1 / comparao 2]
4 6 8 1 5 2
0 1 2 3 4 5
j i
Troca
[Iterao 1 / comparao 3]
4 6 8 1 5 2
0 1 2 3 4 5
j i
Troca
[Iterao 1 / comparao 4]
4 6 1 8 5 2
0 1 2 3 4 5
j i
Troca
[Iterao 1 / comparao 5]
4 6 1 5 8 2
0 1 2 3 4 5
j i
[Iterao 2 / comparao 1]
4 6 1 5 2 8
0 1 2 3 4 5
j i
Troca
[Iterao 2 / comparao 2]
4 6 1 5 2 8
0 1 2 3 4 5
j i
Troca
[Iterao 2 / comparao 3]
4 1 6 5 2 8
0 1 2 3 4 5
j i
Troca
[Iterao 2 / comparao 4]
4 1 5 6 2 8
0 1 2 3 4 5
j i
Troca
[Iterao 3 / comparao 1]
4 1 5 2 6 8
0 1 2 3 4 5
j i
[Iterao 3 / comparao 2]
1 4 5 2 6 8
0 1 2 3 4 5
j i
Troca
[Iterao 3 / comparao 3]
1 4 5 2 6 8
0 1 2 3 4 5
j i
[Iterao 4 / comparao 1]
1 4 2 5 6 8
0 1 2 3 4 5
j i
Troca
[Iterao 4 / comparao 2]
1 4 2 5 6 8
0 1 2 3 4 5
j i
[Iterao 5 / comparao 1]
1 2 4 5 6 8
0 1 2 3 4 5
j i
1 2 4 5 6 8
0 1 2 3 4 5
Parte Parte
ordenada desordenada
4 6 8 1 5 2 1 iterao
0 1 2 3 4 5
1 comparao
i
Parte Parte
ordenada desordenada
4 6 8 1 5 2 2 iterao
0 1 2 3 4 5
1 comparao
i
Parte Parte
ordenada desordenada
4 6 8 1 5 2 3 iterao
0 1 2 3 4 5
3 comparaes
i
Parte Parte
ordenada desordenada
1 4 6 8 5 2 4 iterao
0 1 2 3 4 5
3 comparaes
i
Parte Parte
ordenada desordenada
1 4 5 6 8 2 5 iterao
0 1 2 3 4 5
5 comparaes
i
Parte Parte
ordenada desordenada
1 2 4 5 6 8
0 1 2 3 4 5
N raiz
Nvel 0
Nvel 1
Nvel 2
Nvel 3
10 7 14 16 2 8 4 1 3 9
0 1 2 3 4 5 6 7 8 9
16 14 10 8 7 9 3 2 4 1
0 1 2 3 4 5 6 7 8 9
16 14 10 8 7 9 3 2 4 1
0 1 2 3 4 5 6 7 8 9
14 8 10 4 7 9 3 2 1 16
0 1 2 3 4 5 6 7 8 9
14 8 10 4 7 9 3 2 1 16
0 1 2 3 4 5 6 7 8 9
10 8 9 4 7 1 3 2 14 16
0 1 2 3 4 5 6 7 8 9
10 8 9 4 7 1 3 2 14 16
0 1 2 3 4 5 6 7 8 9
9 8 3 4 7 1 2 10 14 16
0 1 2 3 4 5 6 7 8 9
9 8 3 4 7 1 2 10 14 16
0 1 2 3 4 5 6 7 8 9
8 7 3 4 2 1 9 10 14 16
0 1 2 3 4 5 6 7 8 9
8 7 3 4 2 1 9 10 14 16
0 1 2 3 4 5 6 7 8 9
7 4 3 1 2 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
7 4 3 1 2 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
4 2 3 1 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
4 2 3 1 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
3 2 1 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
3 2 1 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
2 1 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
2 1 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
1 2 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
1 2 3 4 7 8 9 10 14 16
0 1 2 3 4 5 6 7 8 9
Valores ordenados
4
1 2 3
Valores ordenados
1 2 3 4
5 7 8 9
quicksort
7 8 9
Valores ordenados
1 2 3 4 5
7 8 9
quicksort
7 8
Valores ordenados
1 2 3 4 5 9
7 8
Valores ordenados
1 2 3 4 5 7 8 9
A) O(n)
B) O(1)
C) O(n)
D) O(n log n)
E) O(log n)
A) O(n)
B) O(1)
C) O(n)
D) O(n log n)
E) O(log n)
A) Merge sort
B) Insertion sort
C) Bubble sort
D) Quick sort
E) Selection sort
A) Merge sort
B) Insertion sort
C) Bubble sort
D) Quick sort
E) Selection sort
A) SelectionSort e InsertionSort.
B) MergeSort e BubbleSort.
C) QuickSort e SelectionSort.
D) BubbleSort e QuickSort.
E) InsertionSort e MergeSort.
A) SelectionSort e InsertionSort.
B) MergeSort e BubbleSort. Ordenao por troca
C) QuickSort e SelectionSort. Bubble Sort
D) BubbleSort e QuickSort. Quick Sort
E) InsertionSort e MergeSort.
24 Errado 26 A
25 A 27 D
Rodrigo Adur
rodrigoadurti@gmail.com