Escolar Documentos
Profissional Documentos
Cultura Documentos
jaymebh@gmail.com
Bibliografia
Questão de Concurso
3 – MARINHA – QT – 2014
4 – MARINHA – QT – 2011
Questão de Concurso
5 – MARINHA – QT – 2005
Questão de Concurso
Busca Linear – Listas não ordenadas
→ Pior Caso: n
→ Complexidade média:
Seja q a probabilidade de uma chave ser encontrada na lista.
●
Se q = 1, ou seja, a chave sempre poderá ser encontrada em alguma posição da lista, então o
algoritmo tem complexidade aproximada de n/2.
●
Se q = 1/2, ou seja, a chave poderá ser encontrada na metade das vezes que o algoritmo for
executado, então o algoritmo tem complexidade aproximada de 3n/4.
●
Se q = 0, ou seja, todas as buscas são sem sucesso então algoritmo tem complexidade n.
Busca Linear – Listas ordenadas
→ Pior Caso: n
→ Complexidade média:
Seja q a probabilidade de uma chave ser encontrada na lista – Complexidade é n/2 para
qualquer caso.
6 – MARINHA – QT – 2005
Busca Binária – Listas ordenadas
Exemplo:
Valor a pesquisar: 34
15
Pesquisa Binária
16
Pesquisa Binária
17
Pesquisa Binária
18
Pesquisa Binária
19
7 – MARINHA – QT – 2006
8 – MARINHA – QT – 2004
Notação polonesa x polonesa reserva
●
Notação infixa
●
Maneira convencional com a qual representamos expressões aritméticas
●
Operadores ficam entre operandos
●
Ambiguidades na avaliação das expressões são resolvidas por meio de sinais de
preferência, parênteses, colchetes e chaves.
●
Exemplo: (a+b)/c
●
Notação pré-fixa ou notação polonesa
●
Operadores antecedem operandos
●
Não há ambiguidades na avaliação das expressões.
●
Exemplo: / + a b c
●
Avaliação por meio de pilhas
➢
Leia a expressão da direita para esquerda
➢
Se o caracter lido é um operando, coloque-o no topo da pilha
➢
Se o caracter lido é um operador,
●
retire o primeiro operando que está no topo da pilha – operando1
●
retire o segundo operando que está no topo da pilha – operando2
●
faça operando1 operador operando2
●
coloque o resultado no topo da pilha.
Notação polonesa x polonesa reserva
➔
Notação pós-fixa ou notação polonesa reversa
●
Operadores aparecem após operandos
●
Não há ambiguidades na avaliação das expressões.
●
Exemplo: a b + c /
●
Avaliação por meio de pilhas
➢
Leia a expressão da esquerda para direita
➢
Se o caracter lido é um operando, coloque-o no topo da pilha
➢
Se o caracter lido é um operador,
●
retire o primeiro operando que está no topo da pilha – operando2
●
retire o segundo operando que está no topo da pilha – operando1
●
faça operando1 operador operando2
●
coloque o resultado no topo da pilha.
9 – MARINHA – QT – 2010
10 – MARINHA – QT – 2011
11 – MARINHA – QT – 2016
12 – MARINHA – QT – 2016
Gabarito
1A, 2A, 3C, 4E, 5C, 6E, 7A, 8B, 9E, 10D, 11C, 12B
28 Questão de Concurso
Recursividade
jaymebh@gmail.com
Recursividade
Função que apresenta em que seu escopo, uma ou mais chamadas a si
mesma.
– Para que o problema não caia em loop infinito, deve-se existir uma
condição de parada.
Para toda função recursiva existe um procedimento não recursivo que
executa, exatamente, a mesma computação.
– Funções recursivas são frequentemente mais concisas;
– A solução de alguns problemas são mais intuitivas quando os mesmos
são definidos recursivamente.
– Algoritmos não recursivos geralmente são mais eficazes.
A estrutura de dados pilha é utilizada para avaliação de funções
recursivas.
30 Questão de Concurso
Recursividade
31 Questão de Concurso
1 – MARINHA – QT – 2017
2 – MARINHA – QT – 2008
33 Questão de Concurso
3 – MARINHA – QT – 2009
34 Questão de Concurso
3 – MARINHA – QT – 2009
35 Questão de Concurso
4 – MARINHA – QT – 2013
36 Questão de Concurso
5 – MARINHA – QT – 2016
37 Questão de Concurso
Gabarito
38 Questão de Concurso
Árvores
jaymebh@gmail.com
Árvores
1 – MARINHA – QT – 2004
Árvores notáveis
Árvores notáveis
2 – MARINHA – QT – 2016
3 – MARINHA – QT – 2006
4 – MARINHA – QT – 2005
5 – MARINHA – QT – 2007
Árvores Binárias de Busca
6 – MARINHA – QT – 2008
7 – MARINHA – QT – 2015
9 – MARINHA – QT – 2006
Árvores balanceadas
Árvores balanceadas
8 – MARINHA – QT – 2013
10 – MARINHA – QT – 2004
11 – MARINHA – QT – 2011
Percursos em Árvores
Pré-Ordem
●
Visite a raiz da árvore
●
Visite a subárvore esquerda em Pré-Ordem
●
Visite a subárvore direita em Pré-Ordem
Pós-Ordem
●
Visite a subárvore esquerda em Pós-Ordem
●
Visite a subárvore direita em Pós-Ordem
●
Visite a raiz da árvore
Em Nível
●
A partir da raiz, visite os nós, a cada nível da árvore, da esquerda para direita.
12 – MARINHA – QT – 2005
13 – MARINHA – QT – 2011
14 – MARINHA – QT – 2013
15 – MARINHA – QT – 2016
16 – MARINHA – QT – 2010
Gabarito
1E, 2C, 3A, 4E, 5D, 6C, 7E, 8A, 9A, 10B, 11D, 12A,
13B, 14E, 15D, 16C
63 Questão de Concurso
Ordenação
jaymebh@gmail.com
Classificação - Estabilidade
Métodos estáveis
– A ordem relativa dos itens com chaves iguais é
preservada durante o processo de ordenação
Métodos instáveis
– A ordem relativa dos itens com chaves iguais não
é preservada durante o processo de ordenação
Questão de Concurso
Classificação - Estabilidade
Questão de Concurso
Classificação por troca ou
método da bolha - Bublesort
Descrição: O vetor é percorrido sequencialmente várias vezes. Cada passagem consiste
em comparar cada elemento com seu sucessor (x[i]com x[i+1]) e trocar os dois elementos,
se eles não estiverem na ordem correta. A cada iteração um elemento é colocado em sua
posição correta e final.
Executa n-1 iterações até que todo o vetor esteja ordenado.
Estabilidade: Sim
C T C T C T
O(n2) O(1) O(n2) O(n2) O(n2) O(n2)
67
Classificação por troca ou
método da bolha - Bublesort
68
Classificação por troca ou
método da bolha - Bublesort
69
Classificação por troca ou
método da bolha - Bublesort
70
Classificação por troca ou
método da bolha - Bublesort
71
Ordenação por seleção
Descrição
●
Na primeira iteração troca o elemento que está na primeira posição do
vetor com o elemento de menor chave do mesmo.
●
Na segunda iteração troca o elemento que está na segunda posição do
vetor com o segundo elemento de menor chave do mesmo.
●
Repita esse processo até que reste apenas um elemento no vetor.
●
O algoritmo não realiza trocas intermediárias no transcorrer de uma
iteração. A cada iteração apenas uma troca é realizada.
●
A cada iteração um elemento é colocado em sua posição final e
definitiva dentro do vetor.
Estabilidade: Não
C T C T C T
O(n2) O(n) O(n2) O(n) O(n2) O(n)
72
Ordenação por Seleção
73 Questão de Concurso
Ordenação por seleção
74
Ordenação por Inserção
Descrição
●
Realiza uma "segmentação" do vetor em duas porções:
➔
Primeira porção: elementos já ordenados
➔
Segunda porção: elementos ainda não ordenados
●
A cada iteração um elemento é retirado da porção não ordenada e colocada na porção
ordenada.
●
Inicialmente a primeira porção contém apenas um elemento e na segunda porção, os
demais.
●
A primeira porção vai crescendo a medida em que os elementos vão sendo retirados da
porção 2 e colocados na porção 1 em sua posição correta.
●
Ao final de cada iteração tem-se os elementos da porção 1 sempre ordenados, mas não
necessariamente em posição final e definitiva.
Estabilidade: Sim
Melhor Caso Pior Caso Caso Médio
C T C T C T
O(n) O(n) O(n2) O(n2) O(n2) O(n2)
75
Ordenação por Inserção
76 Questão de Concurso
Ordenação por Inserção
Questão de Concurso
Ordenação por Inserção
78 Questão de Concurso
Ordenação por Inserção
79 Questão de Concurso
Ordenação por Inserção
Questão de Concurso
Ordenação por Inserção
81 Questão de Concurso
Ordenação por Inserção
82
Shellsort
Descrição
●
O algoritmo de ordenação por inserção apresenta o seu pior quando o vetor se
encontra em ordem inversa.
●
O algoritmo de ordenação Shellsort é uma otimização do algoritmo de Inserção.
Nele são efetuadas trocas entre itens distantes em h posições:
●
Isso “joga” itens de menor chave para as posições iniciais do vetor
●
“adiantando” a inserção de itens de menor chave na posição correta
●
diminuindo o número de trocas e movimentações.
●
O algoritmo escolhe uma sequencia para h.
●
Diferentes autores utilizam diferentes algoritmos para gerar a sequencia h.
●
Todos eles utilizam como passo base h = 1, que é o algoritmo de ordenação por
Inserção..
Estabilidade: Não
Complexidade empírica
O(n log n )
83
Heapsort
●
Otimização do algoritmo de ordenação por seleção.
●
Estrutura os dados por meio de uma fila de prioridades.
●
Fila de prioridades por sua vez podem ser implementada por meio de um heap: c[i] >= c[2i] e c[i] >=
c[2i+1]
Sua estrutura básica é:
●
Constrói um heap com as chaves
●
Troca o elemento que se encontra na posição 1 com o que está na posição n
●
Refaz o heap
●
Repete os passos anteriores com os n-1 itens restantes, depois com n-2 itens e assim
sucessivamente até se ter o vetor completamente ordenado.
84
Mergesort
●
Utiliza o paradigma dividir para conquistar
●
Dado um vetor com n posições
●
Divida-o em dois subvetores de tamanho n/2
●
Repita o passo anterior até que cada subvetor tenha apenas 1 elemento
●
A partir dos subvetores obtidos una-os, ordenadamente, até que se obtenha
o vetor com tamanho original
Estabilidade: Sim
85
MergeSort
Exemplo
86 Questão de Concurso
QuickSort
●
O quicksort é um algoritmo que funciona usando o paradigma de dividir e
conquistar, usando uma rotina de particionamento que divide o vetor de
estruturas em dois pedaços em torno de um pivô.
●
O pedaço da esquerda só contém elementos com chaves
menores ou iguais que o elemento pivô e o pedaço da direita, só
elementos com chaves maiores que o pivô. O algoritmo procede,
então, para o subproblema de ordenar cada um dos pedaços. A
cada iteração o pivô está em sua posição definitiva e final.
●
Pior caso: O(n2) → o pivô é escolhido como o valor máximo ou
mínimo em cada iteração do algoritmo. Dessa forma o pivô separa
o vetor ou subvetor em uma porção com zero elementos e outra
com o restante dos elementos do vetor ou subvetor.
●
Melhor Caso: O (n log n) → O pivô divide o vetor em dois
subvetores de igual tamanho.
Estabilidade: Não
Melhor Pior Caso
Caso Caso Médio
O(n log n) O(n2) O(n log n)
87
Quicksort
88
1 – MARINHA – QT – 2007
2 – MARINHA – QT – 2008
3 – MARINHA – QT – 2009
4 – MARINHA – QT – 2012
5 – MARINHA – QT – 2012
6 – MARINHA – QT – 2014
Gabarito
95 Questão de Concurso