A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Prof. Alessandro Gonçalves

Apresentações semelhantes


Apresentação em tema: "Prof. Alessandro Gonçalves"— Transcrição da apresentação:

1 Prof. Alessandro Gonçalves
UNDB ESTRUTURAS DE DADOS Prof. Alessandro Gonçalves 1 1 1

2 Lista encadeada circular
Uma lista normal mas o último elemento aponta para o primeiro 5 1 3 Aplicação: loop infinito com elementos sendo adicionados a todo momento Ex: lista de processamento de cartões de crédito (e-commerce), transmissão de dados via rede... 2 2 2

3 Lista duplamente encadeada circular
Uma lista normal mas o último elemento aponta para o primeiro Une a maleabilidade da lista duplamente encadeada com outra facilidade: é circular também. A de mais difícil implementação 5 1 3 3 3 3

4 Recursividade Cálculo de fatorial Progressão geométrica
Quando uma função A chama a si própria (recursão direta) OU Quando uma função A chama B e esta chama A (recursão indireta) Exemplos ? Cálculo de fatorial Progressão geométrica Série de Fibonacci 4 4 4

5 Recursividade Características: Algoritmos mais elegantes
Pode exigir muito poder computacional Muito utilizada por programadores profissionais 5 5 5

6 Recursividade Implantação de recursividade com Fatorial
Como seria o algoritmo ? 6 6 6

7 Recursividade Implemente um algoritmo recursivo para mostrar todos os números pares de 0 até n. 7

8 Recursividade Implemente um programa recursivo para calcular o mdc de dois números. CÁLCULO DO M.D.C. PELO PROCESSO DAS DIVISÕES SUCESSIVAS Nesse processo efetuamos várias divisões até chegar a uma divisão exata. O divisor desta divisão é o m.d.c. Acompanhe o cálculo do m.d.c.(48,30). Regra prática: 1º) dividimos o número maior pelo número menor; 48 / 30 = 1 (com resto 18) 2º) dividimos o divisor 30, que é divisor da divisão anterior, por 18, que é o resto da divisão anterior, e assim sucessivamente; 30 / 18 = 1 (com resto 12) 18 / 12 = 1 (com resto 6) 12 / 6 = 2 (com resto zero - divisão exata) 3º) O divisor da divisão exata é 6. Então m.d.c.(48,30) = 6. 8

9 Recursividade Escreva uma função recursiva que recebe como parâmetros um número real X e um inteiro N e retorna o valor de XN. 9

10 Recursividade Série de Fibonacci 0,1,1,2,3,5,8,13,21... 10

11 Série de Fibonacci – curiosidades
Recursividade Série de Fibonacci – curiosidades Yupana (instrumento de contagem Inca) Nautilus – concha segue a série Outros exemplos: disposição de folhas em plantas, dentição humana... 11

12 Ordenação dos dados Por que classificar os dados ?
Como classificar os dados ? 12

13 Bubble Sort – Ordenação bolha
Lembra a fervura de água, com bolhas maiores para cima Compara o 1º elemento com o 2º, 3º... último e troca se for o caso Compara o 2º elemento com o 3º, 4º... último e troca se for o caso Exemplo em C 13

14 Bubble Sort – Ordenação bolha
Desempenho ? Executa aproximadamente n2 iterações, sempre Não é muito eficiente 14

15 Ordenação por seleção Descobre o menor elemento da lista e troca com o 1º. A partir do 2º elemento, descobre o menor elemento e troca com este. Exemplo em C 15

16 Ordenação por seleção Desempenho ?
Executa aproximadamente n2 iterações, sempre Não é muito eficiente 16

17 Ordenação por inserção
A principal característica deste método consiste em ordenar um conjunto de elementos, utilizando um subconjunto ordenado localizado em seu inicio, e em cada iteração, acrescentamos a este subconjunto mais um elemento, até que atingimos o último elemento do conjunto assim com que ele se torne ordenado. Exemplo em C 17

18 Ordenação por inserção
Exemplo em C 18

19 Ordenação por inserção
Desempenho ? Executa aproximadamente entre n a n2 iterações É mais eficiente que os anteriores 19

20 Ordenação por Shell Sort
Criado por Donald Shell, em 1959 Ele separa o arrays em subarrays, ordena estes a partir do método de inserção direta. Existe a figura do salto ou distância (h), não comparando itens de dados adjacentes, mas sim com distância “h” Obtido com uma fórmula, chamada número de Knuth. 20

21 Ordenação por Shell Sort
Passo Compara 3 com 1 (h=2) Troca 1 com 3 Compara 3 com 5 (h=2) Compara 1 com 5 O segmento com h=2 está ordenado. Divide-se h por 3. Com h=1, é ordenação por inserção. Compara 1 com 2. Depois (1-2). Depois (1-2-3) com 4 ... 24 32 11 60 3 11 32 24 60 3 3 32 11 60 24 3 11 32 60 24

22 Video “ordenação por shell sort”

23 Ordenação por shell sort
Desempenho ? É mais eficiente que os anteriores Entre n*(log n)2) e n1.5 23

24 Ordenação por Quick Sort
Criado por C.A.R., em 1960. Modelo de “dividir para conquistar” Divisão: divide-se os dados de entrada em conjuntos disjuntos (separados); Recursão: soluciona-se os problemas associados aos subconjuntos recursivamente; Conquista: obtém-se as soluções dos subproblemas e junta-se as mesmas em uma única solução. 24

25 Ordenação por Quick Sort
1 – escolhe-se um pivôt, dividindo-se à esquerda o grupo de elementos MENORES e à direita o grupo de elementos MAIORES. 2 – Faça o passo 1 recursivamente em cada sugrupo, até que haja apenas 1 elemento em cada. 3 – junte os grupos, de forma ordenada 25

26 Ordenação por Quick Sort
(b) Fase de Conquista (a) Fase de Divisão 26

27 Ordenação por Quick Sort
Desempenho ? Como o próprio nome diz, é mais eficiente que os anteriores nas mais diversas situações (lista já ordenada, lista invertida, lista misturada...) devendo ser utilizado para ganhos de performance 27

28 Ordenação por Merge Sort
Também usa a estratégia dividir para conquistar 1. Divida a lista por 2, gerando 2 novos vetores a cada passo 2. Recursivamente, faça o passo 1, até chegar a um elemento por vetor 3. Reconstrua cada vetor, de forma ordenada agrupando com o vetor acima 28

29 Ordenação por Merge Sort
Divisão 2 7 4 1 9 6 2 7 4 1 9 6 1 9 6 2 7 4 2 7 4 1 9 6 29

30 Ordenação por Merge Sort
Conquista 1 2 4 6 7 9 2 4 7 1 6 9 1 9 6 2 7 4 2 7 4 1 9 6 30

31 Hash A partir de uma grande quantidade de informações, gera uma pequena informação A ideia é gerar um número único. A função é de uma via só, sem volta. Aplicações: ordenação, bancos de dados (índices), criptografia. 31

32 Hash Considere a função definida abaixo Considere o vetor
1, se valor <20 F(valor) = 2, se 20 >= valor < 40 3, se valor >= 40 Considere o vetor (24, 32, 11, 60, 3) Aplicando o “hash” acima, gero uma lista ordenada 1 2 3 3 11 * 24 32 * 60 * 32

33 Hash Alguns algoritmos de criptografia famosos, baseados em hash:
MD5 – Multi Digest 5 – Desenvolvido pela RSA Security. Usado em P2P e criptografia em Bancos de dados SHA1 – Security Hash Algorithm, desenvolvido pela NSA Whirlpool1 – Desenvolvida por Paulo Barreto e Vincent Rijmen. Adotada pelo ISO 33

34 Hash MD5 (“UNDB”) b32a9969a791e4547296cc8391ca6587 MD5 (“UNDB.”)
531b56f5e2d7e1bc98d3f7790e6691ab sha1 (“UNDB”) 378e4d5f0c0a2b019ba407ef0d4aaac3c0447e48 sha1 (“UNDB.”) aef c45c90606f710ad8c1ae258135b 34

35 Prof. Alessandro Gonçalves
UNDB ESTRUTURAS DE DADOS Prof. Alessandro Gonçalves 35 35 35


Carregar ppt "Prof. Alessandro Gonçalves"

Apresentações semelhantes


Anúncios Google