38
1 Aula 15: - Métodos simples de busca - Métodos simples de ordenação MCTA028 – Programação Estruturada Prof. Jesús P. Mena-Chalco [email protected] 3Q-2017

Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

1

Aula 15: - Métodos simples de busca- Métodos simples de ordenação

MCTA028 – Programação Estruturada

Prof. Jesús P. Mena-Chalco

[email protected]

3Q-2017

Page 2: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

2

Listas encadeadas

Page 3: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

3NULL

Estação Consolação: “Quatro estações” (1991). Mosaico abstrato feito de pastilhas vitrificadas por Tomie Ohtake

Page 4: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

4

Exemplos lista encadeada

8 4 -9

conteudo seg

NULL

3 6 7 -2 No caso da últimacélula, o endereço

é NULL

Page 5: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

5

Outros tipos de listas encadeadas:

Lista circular

7

p

4

8

13

0

-3

A última célulaaponta para a primeira

Page 6: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

6

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 7: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

7

Busca de um elemento em um vetor

Page 8: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

8

Page 9: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

9(*) Fonte: P. Feofiloff. Algoritmos em Linguagem C. 1ª Edição, Editora Campos, 2008.

Page 10: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

10

Busca Linear

VersãoElegante!

Page 11: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

11

Busca Linear Recursiva

Crie uma função recursiva para identificar um elemento em um vetor.

Assinatura / Prototipo:

Page 12: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

12

Busca Linear Recursiva

Page 13: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

13

Busca Binária

Page 14: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

14

11 22 3344 5566 7788 99100 110120 130140 150200

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200Vetorcrescente

Melhor caso: 1Pior caso: n

Melhor caso: 1Pior caso: log(n)

Vetorsemordem

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

Page 15: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

15

Busca Binaria Recursiva

Melhor caso: 1Pior caso: log(n)

Page 16: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

16

11 22 3344 5566 7788 99100 110120 130140 150200

Melhor caso: 1Pior caso: n

Vetorsemordem

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

Page 17: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

17

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

Chave = 101

Page 18: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

18

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0Sup = 15

Chave = 101

Page 19: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

19

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0Sup = 15

Chave = 101

99 100 110 120 130 140 150 200 Inf = 8Sup = 15

Page 20: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

20

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0Sup = 15

Chave = 101

99 100 110 120 130 140 150 200 Inf = 8Sup = 15

99 100 110 Inf = 8Sup = 10

Page 21: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

21

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0Sup = 15

Chave = 101

99 100 110 120 130 140 150 200 Inf = 8Sup = 15

99 100 110 Inf = 8Sup = 10

110 Inf = 10Sup = 10

Page 22: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

22

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200

0  1  2  3 4  5  6  7  8  9 10 11 12 13 14 15

11 22 33 44 55 66 77 88 99 100 110 120 130 140 150 200 Inf = 0Sup = 15

Chave = 101

99 100 110 120 130 140 150 200 Inf = 8Sup = 15

99 100 110 Inf = 8Sup = 10

110 Inf = 10Sup = 10

Inf = 10Sup = 9

Page 23: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

23

Para pensar… P2?

A) Se a chave não estiver no vetor, então devolver o índice do elemento mais próximo à chave.

B) Faça uma função iterativa para a busca binaria

Page 24: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

24

Ordenação

Ordenar corresponde ao processo de re-arranjar um conjunto de objetos em ordem ascendente ou descendente.

Por que ordenar?O objetivo principal da ordenação é facilitar a recuperação posterior de itens do conjunto ordenado.Geralmente considerado no primeiro passo para resolver um problema prático.

As ordens mais utilizadas são a numérica e lexicográfica.

Page 25: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

25

21/03/2016

Page 26: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

26

Por que ordenar?

Busca de elementos:O usuário geralmente quer os dados ordenados.

Deduplicação de elementos:Ordenar é muito útil para eliminar duplicações.

Projeção de objetos em um espaço 3D.

Criação de uma árvore geradora mínima.

Ordenar é o primeiro passo para “carregar” os dados em uma estrutura tipo árvore B+.

Page 27: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

27

Algoritmos para ordenar elementos

Baseado em comparações:Bogo sort

Selection sort

Insertion sort

Bubble sort

Mergesort

Quicksort

Heapsort

Ordenação em tempo linear:Radix sort

Ordenação de primeiros elementos (seleção parcial):Partial Quicksort

Page 28: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

28

O problema de ordenar na forma crescente

Um vetor v[0..n-1] é crescente se v[0] ≤ v[1] ≤ … ≤ [n-1]

O problema de ordenação de um vetor consiste em rearranjar (ou seja, permutar) os elementos de um vetor v[0..n-1] de tal modo que ele se torne crescente.

Vetores ordenados na forma crescente:{1, 1, 1, 1, 1, 1, 1, 1}{0, 1, 1, 1, 2, 3, 4, 4, 4, 4, 4, 4, 100}

Page 29: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

29

Verificar se um vetor v[0..n-1] é crescente

Page 30: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

30

Crie uma versão recursiva da função crescente

Número de comparações T(n):- No melhor caso: T(n) = 1- No pior caso: T(n) = n-1

T(n) = O(n)

Atividade em aula

Page 31: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

31

Vetor crecente (recursiva)

Número de comparações T(n):- No melhor caso: T(n) = 1- No pior caso: T(n) = n-1

T(n) = O(n)

Page 32: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

32

Embaralhando um vetor

Page 33: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

33

Número de trocas de elementos T(n):- No melhor caso: T(n) = n- No pior caso: T(n) = n

T(n) = O(n)

Page 34: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

34

(1)Bogo sort Miracle sort Monkey sortStupid sort

Page 35: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

35

Número de comparações T(n):- No melhor caso: T(n) = n-1- No pior caso: T(n) = ?

Page 36: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

36

(2)Selection Sort:Algoritmo de ordenação por seleção

Page 37: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

37

Selection Sort

Animação: https://www.cs.usfca.edu/~galles/visualization/ComparisonSort.html

Page 38: Aula 15: - Métodos simples de busca - Métodos simples de ...professor.ufabc.edu.br/.../courses/pe-3q-2017/PE-aula15.pdf1 Aula 15: - Métodos simples de busca - Métodos simples de

38

Selection Sort

Complexidade computacional: No pior caso?