89
ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004. 2 ATAL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

Embed Size (px)

Citation preview

Page 1: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 1

2004.2ATAL Análise e Técnicas de

Algoritmos

Análise de Algoritmos de Ordenação

Page 2: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 2

2004.2ATAL Problema da Ordenação

• Formalmente pode assim ser definido:

OrdenaçãoEntrada: Uma seqüência de n números ‹a1, a2, ..., an›.Saída: Uma reordenação da seqûëncia de entrada ‹a'1, a'2, ..., a'n›, onde a'1 ≤ a'2 ≤ ... ≤ a'n.

Em geral, consideramos a seqüência de entrada como um array de n elementos.

Page 3: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 3

2004.2ATAL Estratégia de

Ordenação• Alguns algoritmos clássicos de

ordenação utilizam divisão-e-conquista:– Quebra a entrada original em duas partes.– Recursivamente ordena cada uma das

partes.– Combina as duas partes ordenadas.

• Duas categorias de soluções:– Quebra simples, combinação difícil.– Quebra difícil, combinação simples.

Page 4: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 4

2004.2ATAL Insertion Sort

A:1 j n

ORDENADO chave

InsertionSort(A, n)for j← 2 to n do

chave ← A[j] insere A[j] na parte ordenada A[1..j-1]i ← j – 1while i > 0 e A[i] > chave do

A[i + 1] ← A[i]i ← i – 1

A[i + 1] ← chave

Page 5: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 5

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

Page 6: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 6

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

Page 7: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 7

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

Page 8: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 8

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

Page 9: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 9

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 10: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 10

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 11: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 11

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 12: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 12

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 13: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 13

2004.2ATAL Exemplo do Insertion

Sort45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

2 7 13 23 45

Page 14: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 14

2004.2ATAL Análise do Insertion

Sort• Pior caso:

– Entrada em ordem reversa.– O(n2)

• Caso médio:– O(n2)

• Melhor caso:– Entrada ordenada.– O(n)

Page 15: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 15

2004.2ATAL MergeSort

• Partição simples.• Combinação mais trabalhosa.

3 72 1 5 47 34 20 10 9 23

3 72 1 5 47 34 20 10 9 23

9 10 20 23 341 3 5 47 72

1 3 5 9 10 20 23 34 47 72

simples

ordena

combina

quebra

difícil

Page 16: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 16

2004.2ATAL Análise do MergeSort

• Requer resolução de recorrência.• Melhor caso = Caso médio = Pior caso.

– O(n.logn)MergeSort(A, inicio, fim)if inicio < fim then

meio ← (inicio + fim) div 2MergeSort(A, inicio, meio)MergeSort(A, meio + 1, fim)Intercala(A, inicio, meio,

fim)

Page 17: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 17

2004.2ATAL QuickSort

• Proposto por C.A.R. Hoare em 1962.• Como o MergeSort, utiliza uma estratégia

de divisão-e-conquista.• A parte mais complicada é a quebra.• A combinação é simples.• Ao contrário do MergeSort, ordena in

place.• Ponto chave é encontrar uma estratégia

de particionamento eficiente.

Page 18: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 18

2004.2ATAL QuickSort

• Divisão: escolher um pivô. Dividir o array em duas partes em torno do pivô.

≤ p p > p

pivô

• Conquista: Recursivamente ordenar os dois sub-arrays.

• Combinação: Trivial.

Page 19: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 19

2004.2ATAL QuickSort

3 72 1 5 47 34 20 10 9 23

3 20 1 5 10 9 23 47 34 72

20 23 34 47 721 3 5 9 10

1 3 5 9 10 20 23 34 47 72

difícil

ordena

combina

quebra

simples

Page 20: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 20

2004.2ATAL Escolha do Pivô

• Particionamento pode ser feito de diferentes formas.

• A principal decisão é escolher o pivô.– Primeiro elemento do array.– Último elemento do array.– Elemento médio do array.– Elemento que mais ocorre no array.– Elemento mais próximo da média

aritmética dos elementos do array.

Page 21: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 21

2004.2ATAL Rotina de

Particionamento• Em nossa rotina, o pivô é o último elemento.

Particiona(A, L, R)p ← A[R]i ← Rfor j ← R – 1 downto L do

if A[j] > p theni ← i – 1swap A[i] ↔ A[j]

swap A[R] ↔ A[i]return i

Page 22: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 22

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

Page 23: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 23

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

ij

Page 24: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 24

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

Page 25: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 25

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

Page 26: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 26

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

Page 27: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 27

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

ij

Page 28: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 28

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i ←j

Page 29: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 29

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j3 72 1 5 47 9 20 10 34 23

Page 30: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 30

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i ←j3 72 1 5 47 9 20 10 34 23

Page 31: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 31

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

Page 32: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 32

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

Page 33: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 33

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

Page 34: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 34

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i ←j

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

Page 35: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 35

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

i←j

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

3 20 1 5 10 9 72 47 34 23

Page 36: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 36

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

ij

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

3 20 1 5 10 9 72 47 34 23

Page 37: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 37

2004.2ATAL Exemplo de

Particionamento3 72 1 5 47 34 20 10 9 23

3 72 1 5 47 9 20 10 34 23

3 72 1 5 10 9 20 47 34 23

3 20 1 5 10 9 72 47 34 23

3 20 1 5 10 9 23 47 34 72

Page 38: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 38

2004.2ATAL QuickSort - Algoritmo

• A chamada inicial é QuickSort(A, 1, n)

QuickSort(A, inicio, fim)if inicio < fim then

meio ← particiona(A, inicio, fim)QuickSort(A, inicio, meio - 1)QuickSort(A, meio + 1, fim)

Page 39: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 39

2004.2ATAL Análise do QuickSort

• Requer a resolução de uma relação de recorrência.

• Como nem sempre os dados são divididos em duas metades de mesmo tamanho:– Melhor caso, pior caso e caso médio podem

variar.• Vamos assumir:

– Tempo de partição é O(n).– A posição final do pivô é i.

Page 40: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 40

2004.2ATAL Análise do QuickSort

• Melhor caso:– Pivô sempre fica no meio.– T(n) = 2T(n/2) + n– O(n.log n)

T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos

Page 41: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 41

2004.2ATAL Análise do QuickSort

• Pior caso:– Pivô sempre fica na primeira ou última

posição.– T(n) = T(n - 1) + n– O(n2)

T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos

Page 42: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 42

2004.2ATAL Análise do QuickSort

• Caso médio:– Pivô tem a mesma probabilidade 1/n de

cair em uma das n posições.– Ta(n) = n + 1/n ∑( Ta(i - 1) + Ta(n - i))– O(n.log n)

T(n) = 1 n = 1T(n) = T(n - i) + T(i – 1) + n nos demais casos

Page 43: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 43

2004.2ATAL Ainda sobre QuickSort

• É talvez o algoritmo de ordenação mais usado.

• É fácil de implementar e muito rápido na prática.

• É tipicamente mais do que duas vezes mais rápido do que o MergeSort.

Page 44: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 44

2004.2ATAL Ordenação por

Comparação• Todos os algoritmos de ordenação que

estudamos até agora utilizam comparação de elementos.

• Em uma ordenação por comparação, a ordem relativa de dois elementos ai e aj em uma seqüência é obtida utilizando testes de comparação:– ai < aj, ai ≤ aj, ai = aj, ai > aj e ai ≥ aj.

Page 45: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 45

2004.2ATAL Ordenação por

Comparação• O melhor algoritmo que vimos para

ordenação é O(n.log n).• É possível encontrar uma melhor

solução?• Árvore de decisão pode nos ajudar a

desvendar isso.• É possível usar uma árvore de decisão

para visualizar ordenação por comparação.

Page 46: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 46

2004.2ATAL Árvore de Decisão

a1:a3a2:a3

a1:a2

a1:a3 a2:a3<1, 2, 3> <2, 1, 3>

<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>

≤ >

>

>>

>≤

Page 47: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 47

2004.2ATAL Árvore de Decisão

• Sort(<15, 4, 8>)

a1:a3a2:a3

a1:a2

a1:a3 a2:a3<1, 2, 3> <2, 1, 3>

<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>

≤ 15 > 4

>

>>

>≤

Page 48: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 48

2004.2ATAL Árvore de Decisão

• Sort(<15, 4, 8>)

a1:a3a2:a3

a1:a2

a1:a3 a2:a3<1, 2, 3> <2, 1, 3>

<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>

≤ >

15 > 8

>>

>≤

Page 49: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 49

2004.2ATAL Árvore de Decisão

• Sort(<15, 4, 8>)

a1:a3a2:a3

a1:a2

a1:a3 a2:a3<1, 2, 3> <2, 1, 3>

<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>

≤ >

>

>>

>≤

4 ≤ 8

Page 50: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 50

2004.2ATAL Árvore de Decisão

• Sort(<15, 4, 8>) = <4, 8, 15>

a1:a3a2:a3

a1:a2

a1:a3 a2:a3<1, 2, 3> <2, 1, 3>

<2, 3, 1><3, 1, 2><1, 3, 2> <3, 2, 1>

≤ >

>

>>

>≤

Page 51: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 51

2004.2ATAL

• As folhas de de uma árvore de decisão indicam uma possível ordenação para os elementos.– O número de permutações possível é n!.

• Para definir um limite inferior:– Uma árvore binária tem no máximo 2d

folhas, onde d é a sua profundidade.– Uma árvore binária com L folhas tem

profundidade de pelo menos log L .

Page 52: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 52

2004.2ATAL

• O caminho mais longo da raiz de uma árvore de decisão para qualquer uma de suas folhas representa o pior caso do número de comparações.

• Para n elementos, temos n! folhas:– d = log n! – d ≥ log n!– log n! = Ө(n.log n)– d = Ω(n.log n)

Page 53: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 53

2004.2ATAL Ordenação em Tempo

Linear• Nenhuma comparação é efetuada.• Counting Sort:

Counting SortEntrada: Um array de n números A = <a1, a2, ..., an›, em queai assume valores 1, 2, ..., k.Saída: Um array reordenado B = <b1, b2, ..., bn›. Array auxiliar: Um array C = <c1, c2, ..., ck›

Page 54: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 54

2004.2ATAL Counting Sort

Counting Sort(A, B, k)for i ← 1 to k do

C[i] ← 0for j ← 1 to length[A] do

C[A[j]] ← C[A[j]] + 1for i ←2 to k do

C[i] ← C[i] + C[i - 1]for j ← length[A] downto 1 do

B[C[A[j]]] ← A[j]C[A[j]] ← C[A[j]] - 1

Page 55: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 55

2004.2ATAL Exemplo

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

C:1 2 3 4 5 6

Page 56: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 56

2004.2ATAL

• Laço 1

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

0 0 0 0 0 0C:1 2 3 4 5 6

Page 57: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 57

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

0 0 1 0 0 0C:1 2 3 4 5 6

Page 58: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 58

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

0 0 1 0 0 1C:1 2 3 4 5 6

Page 59: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 59

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

0 0 1 1 0 1C:1 2 3 4 5 6

Page 60: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 60

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

1 0 1 1 0 1C:1 2 3 4 5 6

Page 61: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 61

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

1 0 2 1 0 1C:1 2 3 4 5 6

Page 62: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 62

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

1 0 2 2 0 1C:1 2 3 4 5 6

Page 63: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 63

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 0 2 2 0 1C:1 2 3 4 5 6

Page 64: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 64

2004.2ATAL

• Laço 2

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 0 2 3 0 1C:1 2 3 4 5 6

Page 65: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 65

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 0 2 3 0 1C:1 2 3 4 5 6

Page 66: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 66

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 2 3 0 1C:1 2 3 4 5 6

Page 67: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 67

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 4 3 0 1C:1 2 3 4 5 6

Page 68: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 68

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 4 7 0 1C:1 2 3 4 5 6

Page 69: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 69

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 4 7 7 1C:1 2 3 4 5 6

Page 70: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 70

2004.2ATAL

• Laço 3

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 4 7 7 8C:1 2 3 4 5 6

Page 71: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 71

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

B:1 2 3 4 5 6 7 8

2 2 4 7 7 8C:1 2 3 4 5 6

Page 72: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 72

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

4B:1 2 3 4 5 6 7 8

2 2 4 6 7 8C:1 2 3 4 5 6

Page 73: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 73

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 4B:1 2 3 4 5 6 7 8

1 2 4 6 7 8C:1 2 3 4 5 6

Page 74: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 74

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 4B:1 2 3 4 5 6 7 8

1 2 4 6 7 8C:1 2 3 4 5 6

Page 75: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 75

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 4 4B:1 2 3 4 5 6 7 8

1 2 4 5 7 8C:1 2 3 4 5 6

Page 76: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 76

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 4 4B:1 2 3 4 5 6 7 8

1 2 4 5 7 8C:1 2 3 4 5 6

Page 77: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 77

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 3 4 4B:1 2 3 4 5 6 7 8

1 2 3 5 7 8C:1 2 3 4 5 6

Page 78: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 78

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 3 4 4B:1 2 3 4 5 6 7 8

1 2 3 5 7 8C:1 2 3 4 5 6

Page 79: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 79

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4B:1 2 3 4 5 6 7 8

0 2 3 5 7 8C:1 2 3 4 5 6

Page 80: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 80

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4B:1 2 3 4 5 6 7 8

0 2 3 5 7 8C:1 2 3 4 5 6

Page 81: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 81

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4 4B:1 2 3 4 5 6 7 8

0 2 3 4 7 8C:1 2 3 4 5 6

Page 82: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 82

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4 4B:1 2 3 4 5 6 7 8

0 2 3 4 7 8C:1 2 3 4 5 6

Page 83: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 83

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4 4 6B:1 2 3 4 5 6 7 8

0 2 3 4 7 7C:1 2 3 4 5 6

Page 84: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 84

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 4 4 4 6B:1 2 3 4 5 6 7 8

0 2 3 4 7 7C:1 2 3 4 5 6

Page 85: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 85

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 3 4 4 4 6B:1 2 3 4 5 6 7 8

0 2 2 4 7 7C:1 2 3 4 5 6

Page 86: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 86

2004.2ATAL

• Laço 4

3 6 4 1 3 4 1 4A:1 2 3 4 5 6 7 8

1 1 3 3 4 4 4 6B:1 2 3 4 5 6 7 8

0 2 2 4 7 7C:1 2 3 4 5 6

Page 87: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 87

2004.2ATAL Análise do Counting

Sort• A análise é trivial:

– O primeiro e terceiro laços correspondem a O(k).

– O segundo e quarto laços são O(n).– O tempo total é, portanto, O(n+k).– Na prática, k = O(n).– Logo, o counting sort é O(n).

• Counting Sort é estável.

Page 88: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 88

2004.2ATAL

Page 89: ATAL – Prof. Jorge Figueiredo Ordenação - 1 2004.2 AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

ATAL – Prof. Jorge Figueiredo Ordenação - 89

2004.2ATAL