algoritmos e estruturas de dados iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...outros...

63
1 Aula 09 Revisão + Simulado Algoritmos e Estruturas de Dados I Prof. Jesús P. Mena-Chalco [email protected] 1Q-2019

Upload: others

Post on 09-Jul-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

1

Aula 09 Revisão + Simulado

Algoritmos e Estruturas de Dados I

Prof. Jesús P. [email protected]

1Q-2019

Page 2: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

2

Vetores

Page 3: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

3

Vetores

Page 4: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

4

Vetores

vetor

Page 5: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

5

Vetores

vetor

...

...

Page 6: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

6

Ponteiros

Page 7: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

7

INSTRUÇÕES

Armazena o código compilado (na linguagem máquina)

[~bytes]

PILHA (STACK)

Armazena as variáveis ao longo da execução do programa.

[~Mbytes]

Processo na memória

HEAP

Espaço de memória principal gerenciado pelo SO.

[~Toda a memória RAM]

Alocação estática Alocação dinâmica

int x;double M[10][20];char *c;

double M = malloc(...);

Page 8: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

8

INSTRUÇÕES PILHA (STACK)

Processo na memória

HEAP

Ponteiros?

Em Java e Python o uso é transparente. Não precisa se preocupar de alocar e

liberar memória

Page 9: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

9

INSTRUÇÕES PILHA (STACK)

Processo na memória

HEAP

Fenômeno: Stack Overflow

Page 10: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

10

Endereços

A memória de qualquer computador (arquitetura de Von Neumann) é uma sequência de bytes.

Cada byte armazena um de 256 possíveis valores.

Os bytes são numerados sequencialmente e o número de um byte é o seu endereço

(*) Fonte: http://codingfox.com/3-1-computer-memory-and-data-representation/

Page 11: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

11

Endereços

Em c o endereço de um objeto é dado pelo operador &

Se x é uma variável, então &x é o seu endereçoint s = -999int* p = &s

0x89422

0x60001

p

p = 0x89422&p = 0x60001

-9999

0x89422

*p = -9999

s

“p aponta para a s”“p é o endereço de s”“p aponta a s”

*p é o mesmo que escrever “s”

Page 12: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

12

Structs

Page 13: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

13

Linguagem C: Tipos de dados

Tipos de dados primários.Tipos de dados derivados.Tipos definidos pelo usuário.

(*) Fonte: http://www.studytonight.com/c/datatype-in-c.php

Page 14: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

14

Por que precisamos saber de structs?

Em determinadas aplicações é necessário associar diferentes dados a um “objeto”.

Objeto: Ponto em 3D

Ponto 2

Ponto 3

Ponto 4

Ponto 5

Ponto 1

x y z

.

.

.

Page 15: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

15

Por que precisamos saber de structs?

Podemos usar 3 vetores para armazenar as posições de cada ponto no espaço 3D

Vx Vy Vz

void plot3D(double Vx[], double Vy[], double Vz[]) { ...}

Page 16: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

16

Por que precisamos saber de structs?

Podemos usar 7 vetores para armazenar as posições de cada ponto no espaço 3D e a sua cor RGB

Vx Vy Vz

void plot3D(double Vx[], double Vy[], double Vz[], … ) { ...}

Vr Vg Vb Va

Page 17: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

17

Por que precisamos saber de structs?

Por que não simplificar? void plot3D(struct Ponto3D V[], int n) { ...}

As structs fornecem uma forma “simples” para programar

Vx Vy Vz Vr Vg Vb Va

Page 18: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

18

Estruturas

Uma estrutura para armazenar um ponto 3D

Uma estrutura para armazenar um ponto 3D e sua cor (RGBA)

Page 19: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

19

Maior segmento de reta 2D

Crie um programa, na linguagem C, em que dada uma sequência de n pares de números reais, apresente o comprimento do maior segmento de reta. Deve ser obrigatoriamente utilizada a estrutura: struct Ponto2D { double x; double y; };

Exemplo de entrada:51 12 20 03 34 4Saída:5.66

Obs.: Não use colchetes. Use apenas ponteiros.

Apresente apenas os 2 primeiros digitos após o ponto decimal

Page 20: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

20

Exemplo de segmentos de reta

Maior segmento

Page 21: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

21

Maior segmento de reta 2D

pow(2,2)sqrt(2)

Page 22: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

22

Maior segmento de reta 2D

Page 23: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

23

Área do Menor Triângulo

Crie um programa, na linguagem C, em que dada uma sequência de n (n>=3) pares de números reais, apresente a área do menor triângulo composto por 3 pontos. Deve ser obrigatoriamente utilizada a estrutura: struct Ponto2D { double x; double y; };

Exemplo de entrada:315 1520 3028 30

Saída:60.00

Obs.: Não use colchetes. Use apenas ponteiros.

Apresente apenas os 2 primeiros digitos após o ponto decimal

Page 24: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

24

Exemplo de triângulos para 4 pontos

Page 25: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

25

Área de um triângulo

https://www.mathopenref.com/coordtrianglearea.html

Page 26: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

26

Área do Menor triângulo

Page 27: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

27

Área do Menor triângulo

Page 28: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

28

Listas

Page 29: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

29

Definição

Suporemos que os objetos armazenados nos nós são do tipo int.

A estrutura de nós pode ser definida como:

3 7

Page 30: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

30

Imprimir uma lista (rec)

Page 31: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

31

Busca por um elemento

xBusca → (dado um elemento)

x O(n)

pr

Se o elemento não existir, na lista, a função devolve NULL.

Page 32: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

32

Outros tipos de listas encadeadas:

Lista circular

7

p

4

8

13

0

-3

A última célulaaponta para a primeira

Page 33: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

33

Outros tipos de listas encadeadas:

Lista duplamente encadeada

7

p

9 -2 75

q

NULL NULL

Cada célula contém o endereçoda célula anterior e o da

seguinte

Page 34: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

34

4) Eliminar elemento em uma posição

Dado um ponteiro para o primeiro nó de uma lista ligada, e um número inteiro p. Elimine da lista o nó que está na posição p da lista. A função deve devolver um ponteiro ao primeiro elemento da lista. Assuma que a posição p sempre será uma posição válida.

Uma posição igual a 0 indica o início da lista. Uma posição igual a 1 indica o nó seguinte ao início da lista e assim por diante. O ponteiro dado pode ser nulo, o que significa que a lista inicial está vazia.Obs.: Deve implementar apenas a função eliminarElementoEmUmaPosicao

Entrada Saída Descrição

511223344552

11224455

Na lista ligada de 5 nós, composta pelos elementos: 11→ 22 → 33 → 44 → 55

Deve ser eliminado o elemento da posição 2. Resultando a lista:11→ 22 → 44 → 55

Page 35: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

35

4) Eliminar elemento em uma posição

Page 36: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

36

5) Inverter uma lista ligada

Dado um ponteiro para o primeiro nó de uma lista ligada, crie uma função que permita inverter a ordem na lista. Isto é, as ligações devem ser invertidas. O último elemento da lista deve apontar a NULL. A função deve devolver um ponteiro ao primeiro elemento da lista.

O ponteiro dado pode ser nulo, o que significa que a lista inicial está vazia.Obs.: Deve implementar apenas a função inverterListaLigada

Entrada Saída Descrição

51122334455

5544332211

A lista ligada de 5 elementos, composta por: 11→ 22 → 33 → 44 → 55 → NULL

Deve ser transformada na lista:55→ 44 → 33 → 22 → 11 → NULL

Page 37: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

37

5) Inverter uma lista ligada

Page 38: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

38

6) Comparar duas listas ligadas

Dados dois ponteiros para os primeiros nós de duas listas ligadas, crie uma função que permita comparar os dados nos nós das listas para verificar se eles são iguais. As listas são iguais apenas se tiverem o mesmo número de nós e os nós correspondentes tiverem os mesmos dados. O ponteiro dado pode ser nulo, o que significa que a lista está vazia.Obs.: Deve implementar apenas a função compararListasLigadas

Entrada Saída Descrição

21122111

0 Dadas as duas listas: Lista 1: 11→ 22 → NULL Lista 2: 11→ NULL

A resposta deve ser 0 dado que são listas diferentes.

2556625566

1 Dadas as duas listas: Lista 1: 55→ 66 → NULL Lista 2: 55→ 66 → NULL

A resposta deve ser 1 dado que são listas iguais.

Page 39: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

39

6) Comparar duas listas ligadas

Page 40: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

40

7) Valor em uma determinada posição

Dado um ponteiro para o primeiro nó de uma lista ligada e um inteiro que representa uma posição p, crie uma função que permita obter o valor do nó dada na posição p, contando de trás para frente.Assuma que a posição p sempre será uma posição válida. Uma posição igual a 0 indica o último elemento da lista. Uma posição igual a 1 indica o penúltimo e assim por diante. O ponteiro dado pode ser nulo, o que significa que a lista está vazia.

Obs.: Deve implementar apenas a função valorEmPosicao

Entrada Saída Descrição

511223344551

44 Na lista ligada de 5 elementos, composta por: 11→ 22 → 33 → 44 → 55 → NULL

O elemento na posição 1 (de trás para frente) é44

Page 41: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

41

7) Valor em uma determinada posição

Page 42: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

42

8) Eliminar elementos duplicados

Dado um ponteiro para o primeiro nó de uma lista ligada com elementos organizados na ordem crescente. Crie uma função que permita eliminar o mínimo dos nós para que a lista não contenha nenhum valor repetido. A função deve devolver um ponteiro ao primeiro elemento da lista.

O ponteiro dado pode ser nulo, o que significa que a lista está vazia.Obs.: Deve implementar apenas a função eliminarElementosDuplicados

Entrada Saída Descrição

711222233444455

1122334455

A lista ligada de 7 elementos, composta por: 11→22→22→33→44→44→ 55 → NULL

Deve ser transformada na lista: 11→22→33→44→ 55 → NULL

Page 43: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

43

8) Eliminar elementos duplicados

Page 44: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

44

9) Intercalar duas listas ligadas

Dados dois ponteiros para os primeiros nós de duas listas ligadas, crie uma função que permita intercalar os dados nos nós das listas de tal forma a criar uma (nova) terceira lista ligada mas organizada na forma crescente. Os dados em ambas as listas iniciais estão organizados na sua forma crescente. O ponteiro dado pode ser nulo, o que significa que a lista está vazia.Obs.: Deve implementar apenas a função intercalarListasLigadas

Entrada Saída Descrição

21144422335566

112233445566

Dadas as duas listas: Lista 1: 11→44→NULL Lista 2: 22→33→55→66→NULL

O resultado de intercalar as duas listas deve ser:11→22→33→44→55→66→NULL

199199

9999

Dadas as duas listas: Lista 1: 99→NULL Lista 2: 99→NULL

O resultado de intercalar as duas listas deve ser:99→ 99→NULL

Page 45: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

45

9) Intercalar duas listas ligadas

Page 46: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

46

10) Segundo menor elemento

Dado um ponteiro para o primeiro nó de uma lista ligada. Crie uma função que permita devolver o valor do segundo menor elemento presente na lista ligada. Considere que a lista inicial sempre terá no mínimo 2 elementos.

Obs.: Deve implementar apenas a função segundoMenorElemento

Entrada Saída Descrição

51199443366

33 A lista ligada de 5 elementos, composta por: 11→99→44→33→66→NULL

Tem como segundo menor valor:33

3444444

44 A lista ligada de 3 elementos, composta por: 44→44→44→NULL

Tem como segundo menor valor:44

Page 47: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

47

10) Segundo menor elemento

Page 48: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

Resumo

Listas

Listas com arranjosListas com arranjos

Listas ligadas/encadeadas/enlaçadasListas ligadas/encadeadas/enlaçadas

- Simples para usar- Alocação em bloco contínuo- Acesso a um item em tempo constante

- Simples para usar- Alocação em bloco contínuo- Acesso a um item em tempo constante

- Não requer conhecer a quantidade de itens previamente

- Inserção e remoção não requer deslocamentos

- Não requer conhecer a quantidade de itens previamente

- Inserção e remoção não requer deslocamentos

- Requer saber a quantidade de itens previamente (para alocação)

- Inserção/Remoção requer deslocamentos- Expansão custosa (realocar e copiar)

- Requer saber a quantidade de itens previamente (para alocação)

- Inserção/Remoção requer deslocamentos- Expansão custosa (realocar e copiar)

- Acesso a uma posição necessita percorrer a lista- Memória extra para os ponteiros

- Acesso a uma posição necessita percorrer a lista- Memória extra para os ponteiros

Page 49: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

49

listas e árvores

Page 50: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

50

Vetor (array): Elementos contiguos na memória. Todos do mesmo tipo de dado

Listas ligadas: Elementos não necessariamente contiguos na memória.Podem ter ‘atributos’ diferentes.

Árvores:Elementos não necessariamente contiguos na memória.Podem ter ‘atributos’ diferentes.

Page 51: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

51

Structs

Para uma lista ligada:

Para uma lista duplamente ligadae também para uma árvore em quecada nó tenha no máximo 2 ligações:

Page 52: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

52

Varredura

Como seria a varredura e-r-d?

Page 53: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

53

Varredura

Na figura abaixo, os nós estão numeradas na ordem da varredura e-r-d.

5

3 8

1 4

0 2

6 9

7

Page 54: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

54

Custos de algoritmos

Page 55: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

55

O número de comparações, no algoritmos, depende dos inteiros registrados no vetor.

No melhor caso: o elemento está na primeira posição

No pior caso: o elemento está na última posição ou não está no vetor.

No caso médio?

Page 56: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

56

Busca de um elemento

Seja f uma função de complexidade tal que f(n) é o número de elementos consultados.

Melhor caso:

Pior caso:

Caso médio:

Quando o elemento procurado é o primeiro consultado

Quando o elemento procurado é o último consultado ouNão está presente no vetor

Page 57: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

57(*) Fonte: http://algs4.cs.princeton.edu/14analysis/

Page 58: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

58

http://bigocheatsheet.com/

Page 59: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

59

Simulado

Page 60: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

60

Q1

(a) Devolve a diferença entre o maior e o menor valor presente no vetor V.

(b) Para qualquer caso o número de comparações é proporcional a 2n.

Page 61: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

61

Q2

Page 62: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

62

Q3

Page 63: Algoritmos e Estruturas de Dados Iprofessor.ufabc.edu.br/~jesus.mena/courses/aed1-1q-2019/...Outros tipos de listas encadeadas: Lista circular 7 p 4 8 13 0-3 A última célula aponta

63

Q4