139
Projeto e Análise Aula 1: Algoritmo Prof. Carlos Terças-feiras, 8 se de Algoritmos os de Ordenação s de Salles 8h20 às 11h10

Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Embed Size (px)

Citation preview

Page 1: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Projeto e Análise

Aula 1: Algoritmos

Prof. Carlos de Terças-feiras, 8h20

Análise de Algoritmos

Algoritmos de Ordenação

Prof. Carlos de Salles, 8h20 às 11h10

Page 2: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Algoritmos de

• Insertsort

• Mergesort

• Heapsort

• Quicksort• Quicksort

de Ordenação

Page 3: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Algoritmos de

� Dado um vetor v com Nordenação consiste em organizar todos esses N elementos em uma ordem (nãonão-decrescente etc)

� Exemplo:

� v = {1, 9, 8, 5, 3, 7, 4}

− Depois de ordenado de forma não

− v = {1, 3, 4, 5, 7, 8, 9}

de Ordenação

N elementos, a ordenação consiste em organizar todos esses

elementos em uma ordem (não-crescente,

Depois de ordenado de forma não-decrescente, v fica:

Page 4: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

� Outros nomes:

� Bubble sort

� Selection sort

� Consite em posicionar� Consite em posicionarelemento em seu lugarconsecutivas

Insert Sort

o menor ou o maioro menor ou o maiorlugar correto N vezes

Page 5: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

for i=1,N do

for j=i+1,N do

if v[i]>v[j]

v[i],v[j] = v[j],v[v[i],v[j] = v[j],v[

end

end

end

Insert Sort

]>v[j] then

],v[j] = v[j],v[i]],v[j] = v[j],v[i]

Page 6: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

Page 7: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

Page 8: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

Page 9: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

Page 10: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

Page 11: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

1 9 8 5 3 7 41 9 8 5 3 7 4

j

Page 12: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort

5 3 7 45 3 7 4

Page 13: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 8 9 5 3 7 4

i

1 8 9 5 3 7 4

j

Insert Sort

3 7 43 7 4

Page 14: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 5 9 8 3 7 4

i

1 5 9 8 3 7 4

j

Insert Sort

7 47 4

Page 15: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 9 8 5 7 4

i

1 3 9 8 5 7 4

j

Insert Sort

1 3 9 8 5 7 41 3 9 8 5 7 4

Page 16: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 9 8 5 7 4

i

1 3 9 8 5 7 4

j

Insert Sort

1 3 9 8 5 7 41 3 9 8 5 7 4

j

Page 17: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 9 8 5 7 4

i

1 3 9 8 5 7 4

j

Insert Sort

5 7 45 7 4

Page 18: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 8 9 5 7 4

i

1 3 8 9 5 7 4

j

Insert Sort

7 47 4

Page 19: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 5 9 8 7 4

i

1 3 5 9 8 7 4

j

Insert Sort

1 3 5 9 8 7 41 3 5 9 8 7 4

Page 20: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 5 9 8 7 4

i

1 3 5 9 8 7 4

j

Insert Sort

44

j

Page 21: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 9 8 7 5

i

1 3 4 9 8 7 5

j

Insert Sort

7 57 5

Page 22: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 8 9 7 5

i

1 3 4 8 9 7 5

j

Insert Sort

55

Page 23: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 7 9 8 5

i

1 3 4 7 9 8 5

j

Insert Sort

55

j

Page 24: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 5 9 8 7

i

1 3 4 5 9 8 7

j

Insert Sort

77

Page 25: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 5 8 9 7

i

1 3 4 5 8 9 7

j

Insert Sort

77

j

Page 26: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 5 7 9 8

i

1 3 4 5 7 9 8

j

Insert Sort

9 89 8

j

Page 27: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 5 7 8 91 3 4 5 7 8 9

Insert Sort

1 3 4 5 7 8 91 3 4 5 7 8 9

Page 28: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

1 3 4 5 7 8 91 3 4 5 7 8 9Número de operações:

(N-1) + (N-2) + (N-3) + … + 3 + 2 + 1

N*(N-1)2

Insert Sort

1 3 4 5 7 8 91 3 4 5 7 8 9Número de operações:

3) + … + 3 + 2 + 1

1)

Page 29: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort

� Ideia:

� Se o vetor já estiver ordenadointeração, seria interessantealgoritmo.

Como detecto se um vetor� Como detecto se um vetor

ordenado = true

for i=1,N do

if v[i]>v[i+1] then ordenado

end

Insert Sort

ordenado em algumainteressante detectar isso e parar o

vetor está ordenado?vetor está ordenado?

ordenado = false end

Page 30: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

for i=N,2,-1 do

trocas = false

for j=1,i-1 do

if v[j]>v[j+1] then

v[j],v[j+1] = v[j+1],v[j]v[j],v[j+1] = v[j+1],v[j]

trocas = true

end

end

if not trocas then break

end

Insert Sort (melhoria)

then

v[j],v[j+1] = v[j+1],v[j]v[j],v[j+1] = v[j+1],v[j]

break end

Page 31: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort (melhoria)

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

Page 32: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 9 8 5 3 7 4

i

1 9 8 5 3 7 4

j

Insert Sort (melhoria)

5 3 7 4

i

5 3 7 4

Page 33: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 9 5 3 7 4

i

1 8 9 5 3 7 4

j

Insert Sort (melhoria)

3 7 4

i

3 7 4

Page 34: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 5 9 3 7 4

i

1 8 5 9 3 7 4

j

Insert Sort (melhoria)

7 4

i

7 4

Page 35: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 5 3 9 7 4

i

1 8 5 3 9 7 4

j

Insert Sort (melhoria)

4

i

4

Page 36: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 5 3 7 9 4

i

1 8 5 3 7 9 4

j

Insert Sort (melhoria)

9 4

i

9 4

Page 37: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 5 3 7 4 9

i

1 8 5 3 7 4 9

j

Insert Sort (melhoria)

1 8 5 3 7 4 91 8 5 3 7 4 9

Page 38: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 8 5 3 7 4 9

i

1 8 5 3 7 4 9

j

Insert Sort (melhoria)

3 7 4 93 7 4 9

Page 39: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 5 8 3 7 4 9

i

1 5 8 3 7 4 9

j

Insert Sort (melhoria)

7 4 97 4 9

Page 40: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 5 3 8 7 4 9

i

1 5 3 8 7 4 9

j

Insert Sort (melhoria)

4 94 9

Page 41: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 5 3 7 8 4 9

i

1 5 3 7 8 4 9

j

Insert Sort (melhoria)

99

Page 42: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 5 3 7 4 8 9

i

1 5 3 7 4 8 9

j

Insert Sort (melhoria)

1 5 3 7 4 8 91 5 3 7 4 8 9

Page 43: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 5 3 7 4 8 9

i

1 5 3 7 4 8 9

j

Insert Sort (melhoria)

7 4 8 97 4 8 9

Page 44: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 5 7 4 8 9

i

1 3 5 7 4 8 9

j

Insert Sort (melhoria)

1 3 5 7 4 8 91 3 5 7 4 8 9

Page 45: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 5 7 4 8 9

i

1 3 5 7 4 8 9

j

Insert Sort (melhoria)

8 98 9

Page 46: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 5 4 7 8 9

i

1 3 5 4 7 8 9

j

Insert Sort (melhoria)

7 8 97 8 9

Page 47: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 5 4 7 8 9

i

1 3 5 4 7 8 9

j

Insert Sort (melhoria)

7 8 97 8 9

Page 48: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 5 4 7 8 9

i

1 3 5 4 7 8 9

j

Insert Sort (melhoria)

7 8 97 8 9

Page 49: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 4 5 7 8 9

i

1 3 4 5 7 8 9

j

Insert Sort (melhoria)

1 3 4 5 7 8 91 3 4 5 7 8 9

Page 50: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 4 5 7 8 9

i

1 3 4 5 7 8 9

j

Insert Sort (melhoria)

1 3 4 5 7 8 91 3 4 5 7 8 9

Page 51: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Insert Sort (

1 3 4 5 7 8 91 3 4 5 7 8 9

Insert Sort (melhoria)

1 3 4 5 7 8 91 3 4 5 7 8 9

Page 52: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

� Ordena inicialmente subou 2 e recursivamente dobra esse tamanho até ordenar o vetor total de tamanho N

� Baseia-se no merge de dois vetores ordenadosBaseia-se no merge de dois vetores ordenados

Mergesort

Ordena inicialmente sub-vetores de tamanho 1 ou 2 e recursivamente dobra esse tamanho até ordenar o vetor total de tamanho N

se no merge de dois vetores ordenadosse no merge de dois vetores ordenados

Page 53: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores ordenados

� Dados dois vetores V1 e V2, já ordenados, o merge cria um outro vetor V ordenado com os elementos de V1 e V2

local i,j,k = 1,1,1

for k=1,#v1+#v2 do

if j>#v2 then v[k]=v1[i]; i=i+1

else if i>#v1 then v[k]=v2[j]; j=j+1

else if v1[i]<=v2[j] then

else v[k]=v2[j]; j=j+1 end

end

Merge de dois vetores ordenados

Dados dois vetores V1 e V2, já ordenados, o cria um outro vetor V ordenado com os

v[k]=v1[i]; i=i+1

v[k]=v2[j]; j=j+1

then v[k]=v1[i]; i=i+1

end

Page 54: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

i

j

5 7V2=

V= 1

k

Merge de dois vetores

3 7 18 20

7 8 11 13

Page 55: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

i

j

5 7V2=

V= 1 3

k

Merge de dois vetores

3 7 18 20

7 8 11 13

Page 56: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=j

5 7V2=

V= 1 3 5

k

Merge de dois vetores

3 7 18 20

i

7 8 11 13

Page 57: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=j

5 7V2=

V= 1 3 5 7

k

Merge de dois vetores

3 7 18 20

i

7 8 11 13

Page 58: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=j

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

7 8 11 13

7

k

Page 59: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8

k

Page 60: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8 11

k

Page 61: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8 11 13

k

Page 62: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8 11 13 18

k

Page 63: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8 11 13 18 20

k

Page 64: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Merge de dois vetores

1 3V1=

5 7V2=

V= 1 3 5 7

Merge de dois vetores

3 7 18 20

i

j

7 8 11 13

7 8 11 13 18 20

k

Page 65: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

Mergesort

1 9 8 5 3 7 4

Page 66: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 9 8 5

Mergesort

1 9 8 5 3 7 4

3 7 4

Page 67: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 9 8 5

1 9 8 51 9 8 5

Mergesort

1 9 8 5 3 7 4

3 7 4

Page 68: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 9 8 5

1 9 5 81 9 5 8

Mergesort

1 9 8 5 3 7 4

3 7 4

Page 69: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 5 8 9

Mergesort

1 9 8 5 3 7 4

3 7 4

Page 70: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 5 8 9

Mergesort

1 9 8 5 3 7 4

3 7 4

Page 71: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 5 8 9

Mergesort

1 9 8 5 3 7 4

3 7 4

3 7 43 7 4

Page 72: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 5 8 9

Mergesort

1 9 8 5 3 7 4

3 7 4

3 7 43 7 4

Page 73: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 9 8 5 3 7 4

1 5 8 9

Mergesort

1 9 8 5 3 7 4

3 4 7

Page 74: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort

1 3 4 5 7 8 9

Mergesort

1 3 4 5 7 8 9

Page 75: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort -

1 9 8 5 3 7 4

1 9 8 5

1 9 8 51 9 8 5

- operações

1 9 8 5 3 7 4

3 7 4

3 7 43 7 4

Page 76: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Mergesort -

1 9 8 5 3 7 4

1 9 8 5

1 9 8 51 9 8 5

Total de operações:N * log

N operações em cada nível

- operações

1 9 8 5 3 7 4

3 7 4

3 7 4

log2 N

níveis

3 7 4

Total de operações:N * log

2 N

N operações em cada nível

Page 77: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

� Ordenação baseada na estrutura de dados heap

� A heap é um vetor que pode ser visto como uma árvore binária completa

� Cada nó da árvore equivale a um valor no vetor

Heapsort

Ordenação baseada na estrutura de dados

é um vetor que pode ser visto como uma árvore binária completa

Cada nó da árvore equivale a um valor no vetor

Page 78: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Primitivas da Heap

� length(V)

� número de elementos no vetor V

� heap-size(V)

� número de elementos da � número de elementos da vetor V

Primitivas da Heap

número de elementos no vetor V

número de elementos da heap armazenados no número de elementos da heap armazenados no

Page 79: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Vetor Heap – primitivas de árvore

� parent(i)

� return i/2

� left(i)

� return 2i� return 2i

� right(i)

� return 2i+1

primitivas de árvore

Page 80: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heap como um vetor

1 9 8 5

1

9

5 3

Heap como um vetor

5 3 7 4

1

8

7 4

Page 81: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Propriedade da Heap

� Para cada nó i que não seja a raiz, então:

� V[ parent(i) ] >= V[i]

� Exemplo:

99

5

1 3

Propriedade da Heap

Para cada nó i que não seja a raiz, então:

99

8

7 4

Page 82: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Primitiva Heapify

� Função para manter a propriedade da heapfunction heapify(V, i)

l = left(i)

r = right(i)

if l<=heap-size(V) and V[l]>V[i] if l<=heap-size(V) and V[l]>V[i] else largest = i end

if r<=heap-size(V) and V[r]>V[largest] then largest=r end

if largest != i thenV[i], V[largest] = V[largest], V[i]heapify(V, largest)

end

end

Primitiva Heapify

Função para manter a propriedade da heap

V[l]>V[i] then largest = lV[l]>V[i] then largest = l

V[r]>V[largest]

V[i], V[largest] = V[largest], V[i]

Page 83: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

� Primitiva que constrói uma vetor de N elementos

function build_heap

heap-size(V) = lengthheap-size(V) = length

for i=length(V)/2,1,

heapify(V,i)

end

end

Construindo uma Heap

Primitiva que constrói uma heap a partir de um

build_heap(V)

length(V) -- #Vlength(V) -- #V

(V)/2,1,-1 do

Page 84: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

1 9 8 5

1

9

5 3

Construindo uma Heap

5 3 7 4

1i

8

7 4

heapify

Page 85: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

1 9 8 5

1i

9

5 3

heapify

Construindo uma Heap

5 3 7 4

1

8

7 4

Page 86: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

1 9 8 5

1i

9

5 3

i

Construindo uma Heap

5 3 7 4

1i

heapify

8

7 4

i

Page 87: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

9 1 8 5

9i

1

5 3

iheapify

Construindo uma Heap

5 3 7 4

9i

8

7 4

i

Page 88: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

9 5 8 1

9i

5

1 3

i

heapify

Construindo uma Heap

1 3 7 4

9i

8

7 4

i

Page 89: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Construindo uma Heap

9 5 8 1

9

5

1 3

Construindo uma Heap

1 3 7 4

9

8

7 4

Page 90: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

function heapsort(V)

for i=length(V),2,

V[1], V[i] = V[i], V[1]

heap-size(V) = heap-size(V) =

1

heapify(V,1)

end

end

Heapsort

heapsort(V)

(V),2,-1 do

V[1], V[i] = V[i], V[1]

(V) = heap-size(V)-(V) = heap-size(V)-

(V,1)

Page 91: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

9 5 8 1

9

5

1 3

Heapsort

1 3 7 4

9

8

7 4

i

Page 92: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

4 5 8 1

4

5

1 3

Heapsort

1 3 7 9

4 heapify

8

7 9

i

Page 93: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

8 5 4 1

8

5

1 3

Heapsort

1 3 7 9

8

4

7 9

iheapify

Page 94: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

8 5 7 1

8

5

1 3

Heapsort

1 3 4 9

8

7

4 9

i

heapify

Page 95: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

8 5 7 1

8

5

1 3

Heapsort

1 3 4 9

8

7

4 9

i

Page 96: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

4 5 7 1

4

5

1 3

Heapsort

1 3 8 9

4 heapify

7

8 9

i

Page 97: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

7 5 4 1

7

5

1 3

Heapsort

1 3 8 9

7

4

8 9

iheapify

Page 98: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

7 5 4 1

7

5

1 3

i

Heapsort

1 3 8 9

7

4

8 9

Page 99: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

3 5 4 1

3

5

1 7

i

Heapsort

1 7 8 9

3 heapify

4

8 9

Page 100: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

5 3 4 1

5

3

1 7

iheapify

Heapsort

1 7 8 9

5

4

8 9

Page 101: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

5 3 4 1

5

3

1 7

i

Heapsort

1 7 8 9

5

4

8 9

Page 102: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

1 3 4 5

1

3

5 7

i

Heapsort

5 7 8 9

1 heapify

4

8 9

Page 103: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

4 3 1 5

4

3

5 7

i

Heapsort

5 7 8 9

4

1

8 9

heapify

Page 104: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

4 3 1 5

4

3

5 7

Heapsort

5 7 8 9

4i

1

8 9

i

Page 105: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

1 3 4 5

1

3

5 7

Heapsort

5 7 8 9

1 heapify

i

4

8 9

i

Page 106: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

3 1 4 5

3

1

5 7

heapify

Heapsort

5 7 8 9

3i

4

8 9

i

Page 107: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

3 1 4 5

3i

1

5 7

i

Heapsort

5 7 8 9

3

4

8 9

Page 108: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

1 3 4 5

1i

3

5 7

i

Heapsort

5 7 8 9

1 heapify

4

8 9

Page 109: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Heapsort

1 3 4 5

1

3

5 7

Heapsort

5 7 8 9

1

4

8 9

Page 110: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Operações do Heapsort

1 3 4 5

1

3

5 7

N-1 (i varia de 1 a N

Operações do Heapsort

5 7 8 9

1

4

8 9

log2N

(heapify –depende da

altura da heap)

(i varia de 1 a N-1)

Page 111: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Operações do Heapsort

1 3 4 5

1Total de operações:

3

5 7

N-1 (i varia de 1 a N

operações:(N-1) * log

2N

Operações do Heapsort

5 7 8 9

1

4

8 9

log2N

(heapify –depende da

altura da heap)

(i varia de 1 a N-1)

Page 112: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort

� Ordena o vetor particionando recursivamente

� A cada iteração, localiza a posição final de um elemento aleatório (pivôem duas partes para prosseguir a ordenaçãoem duas partes para prosseguir a ordenação

Quicksort

Ordena o vetor particionando recursivamente

A cada iteração, localiza a posição final de um pivô) e subdivide o vetor

em duas partes para prosseguir a ordenaçãoem duas partes para prosseguir a ordenação

Page 113: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Partição

� Localiza a posição final do aleatório do vetor) e divide o vetor em duas partes, garantindo:

� Todos os elementos à esquerda do pivô são menores ou iguais a elemenores ou iguais a ele

� Todos os elementos à direita do pivô são que ele

Partição

Localiza a posição final do pivô (um elemento aleatório do vetor) e divide o vetor em duas

Todos os elementos à esquerda do pivô são a elea ele

Todos os elementos à direita do pivô são maiores

Page 114: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Partiçãofunction partition(V, left, right)

pivot = V[left]i = left-1

j = right+1while true do

repeat j=j-1 untilrepeat i=i+1 untilrepeat i=i+1 until

if i<j thenV[i], V[j] = V[j], V[i]

else

return jend

end

end

Partiçãopartition(V, left, right)

until V[j]<=pivotuntil V[i]>=pivotuntil V[i]>=pivot

V[i], V[j] = V[j], V[i]

Page 115: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort

function quicksort(V, left, right)

if left<right then

middle = partition

quicksort(V, left, middle)(V, left, middle)

quicksort(V, middle+1, right)

end

end

Quicksort

quicksort(V, left, right)

partition(V, left, right)

(V, left, middle)(V, left, middle)

(V, middle+1, right)

Page 116: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - quicksort

5 9 8 11 2 3 4 5 6 7

quicksort(1,7)

1 3 7 41 2 3 4 5 6 7

Page 117: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

5 9 8 1i

partition(1,7)

1 3 7 4j

Page 118: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

5 9 8 1i

until V[j]<=5 ?

partition(1,7)

1 3 7 4j

until V[j]<=5 ?

Page 119: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

5 9 8 1i

until V[i]>=5 ?

partition(1,7)

1 3 7 4j

until V[i]>=5 ?

Page 120: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 9 8 1i

V[i], V[j] = V[j], V[i]

partition(1,7)

1 3 7 5j

V[i], V[j] = V[j], V[i]

Page 121: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 9 8 1i

until V[j]<=5 ?

partition(1,7)

1 3 7 5jj

until V[j]<=5 ?

Page 122: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 9 8 1i

until V[j]<=5 ?

partition(1,7)

1 3 7 5jj

until V[j]<=5 ?

Page 123: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 9 8 1i

until V[i]>=5 ?

partition(1,7)

1 3 7 5jj

until V[i]>=5 ?

Page 124: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 8 1i

V[i], V[j] = V[j], V[i]

partition(1,7)

1 9 7 5jj

V[i], V[j] = V[j], V[i]

Page 125: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 8 1i

until V[j]<=5 ?

partition(1,7)

1 9 7 5jj

until V[j]<=5 ?

Page 126: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 8 1i

until V[i]>=5 ?

partition(1,7)

1 9 7 5jj

until V[i]>=5 ?

Page 127: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 1 8i

V[i], V[j] = V[j], V[i]

partition(1,7)

8 9 7 5jj

V[i], V[j] = V[j], V[i]

Page 128: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 1 8i

jjjj

until V[j]<=5 ?

partition(1,7)

8 9 7 5

until V[j]<=5 ?

Page 129: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3 1 8i

jjjj

until V[i]>=5 ?

partition(1,7)

8 9 7 5i

until V[i]>=5 ?

Page 130: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - quicksort

4 3 1 8middle

4 3 14 3 1quicksort(1,3)

quicksort(1,7)

8 9 7 5

8 9 7 58 9 7 5quicksort(4,7)

Page 131: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - quicksort

4 31 2 3

quicksort(1,3)

3 11 2 3

Page 132: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3

i

partition(1,3)

3 1

j

Page 133: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3

i

until V[j]<=4 ?

partition(1,3)

3 1

j

until V[j]<=4 ?

Page 134: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

4 3

i

until V[i]>=4 ?

partition(1,3)

3 1

j

until V[i]>=4 ?

Page 135: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

1 3

i

V[i], V[j] = V[j], V[i]

partition(1,3)

3 4

j

V[i], V[j] = V[j], V[i]

Page 136: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

1 3

i j

until V[j]<=4 ?

partition(1,3)

3 4

until V[j]<=4 ?

Page 137: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

1 3

i

j

i

until V[i]>=4 ?

partition(1,3)

3 4

until V[i]>=4 ?

Page 138: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

1 3

j

until V[i]>=4 ?

partition(1,3)

3 4

ii

until V[i]>=4 ?

Page 139: Projeto e Análise de Algoritmos - DEINF/UFMAcsalles/paa/paa_01_ordenacao.pdf · Projeto e Análise Aula 1: Algoritmos Prof. Carlos de Terças-feiras , 8h20 ... algoritmo. Como detecto

Quicksort - partition

1 3

middle

partition(1,3)

3 4