ATAL Análise e Técnicas de

87
. ATAL Prof Jorge Figueiredo - Ordenação 1 2003.2 ATAL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação

Transcript of ATAL Análise e Técnicas de

Page 1: ATAL Análise e Técnicas de

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

2003.2ATAL Análise e Técnicas de

Algoritmos

Análise de Algoritmos de Ordenação

Page 2: ATAL Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

Page 6: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

Page 7: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

Page 8: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

Page 9: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 10: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

Page 11: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 12: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 7 13 23 2

7 45 13 23 2

7 13 45 23 2

7 13 23 45 2

Page 13: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo do Insertion Sort

45 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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23

Page 23: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23ij

Page 24: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23i←j

Page 25: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23i←j

Page 26: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23i←j

Page 27: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23ij

Page 28: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23i ←j

Page 29: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23

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

Page 30: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 72 1 5 47 34 20 10 9 23

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

Page 31: ATAL Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.2ATAL Exemplo de Particionamento

3 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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 ∑( T

a(i - 1) + T

a(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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 a

i e a

j em

uma seqüência é obtida utilizando testes de comparação:– a

i < a

j, a

i ≤ a

j, a

i = a

j, a

i > a

j e a

i ≥ a

j.

Page 45: ATAL Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.2ATAL

• O caminho mais longo da raiz de uma árvore de decisão para qualquer uma de suas folhas representa o pior casodo 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 Análise e Técnicas de

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

2003.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 quea

i 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 Análise e Técnicas de

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

2003.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 ←21 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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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 Análise e Técnicas de

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

2003.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.