27/11/2013 1
Ordenação de Vetores
27/11/2013 2
Problema
Ordenar os elementos de um vetor em
ordem crescente.
Um vetor com elementos ordenados
27/11/2013 3
Métodos mais simples
Ordenação por Inserção
Ordenação por Seleção
Ordenação pelo método de “bolhas”
27/11/2013 4
Outros métodos
Quicksort
Mergesort
Heapsort
27/11/2013 5
Ordenação por Inserção
Baseia-se na forma como muitas pessoas
ordenam elementos de um conjunto:
27/11/2013 6
Ordenação por Inserção
Consiste em percorrer o vetor da esquerda para a
direita.
À medida em que avança, vai deixando os elementos
mais à esquerda ordenados.
Ou seja, à medida em que avança, se encontra um
elemento “fora de lugar”, desloca todos os
elementos que estão à sua esquerda, até achar o
lugar correto do elemento em consideração.
Começa-se a ordenar a partir do segundo elemento
27/11/2013 7
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 8
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 9
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 10
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8
5
27/11/2013 11
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8
5
27/11/2013 12
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8
5
27/11/2013 13
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 14
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 15
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 16
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 8 9
7
27/11/2013 17
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 8 9
7
27/11/2013 18
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 8 9
7
27/11/2013 19
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 20
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 21
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 22
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 23
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 24
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 25
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 26
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 5 6 7 8 9
4
27/11/2013 27
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 28
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 29
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 30
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 31
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 32
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 33
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 34
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 35
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 4 5 6 7 8 9
3
27/11/2013 36
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 37
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 38
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 39
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 40
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 41
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 42
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 43
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 44
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 45
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 3 4 5 6 7 8 9
1
27/11/2013 46
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 47
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 48
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 49
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 50
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 51
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 52
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 53
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 54
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 55
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 56
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 1 3 4 5 6 7 8 9
27/11/2013 57
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 58
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 59
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 60
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 61
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 62
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 63
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 64
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 65
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 66
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 3 4 5 6 7 8 9
27/11/2013 67
Ordenação por Inserção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 68
algoritmo “Ordenação pelo Método de Inserção”
var
A: vetor[1..10] de inteiro i,j,pivo: inteiro
inicio
para i de 2 ate 10 faca pivo <- A[i]
j <- i – 1
enquanto (pivo < A[j]) e (j >= 1) faca A[j+1] <- A[j]
j <- j – 1
se (j < 1) entao
interrompa fimse
fimenquanto A[j+1] <- pivo fimpara
fimalgoritmo
27/11/2013 69
Ordenação por Seleção
Consiste em percorrer o vetor da esquerda para a
direita.
Quando achar o menor elemento, troca-o com o
elemento da posição mais à esquerda.
Desta forma, ao final de cada iteração, garante que
o menor elemento está na posição mais à esquerda
do vetor.
Continua as iterações a partir do elemento
27/11/2013 70
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 71
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 72
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 73
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 74
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 75
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 76
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 77
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 78
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 6 8 5 9 7 4 3 1 0 2
27/11/2013 79
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 80
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 81
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 82
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 83
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 84
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 85
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 86
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 8 5 9 7 4 3 1 6 2
27/11/2013 87
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 88
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 89
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 90
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 91
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 92
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 93
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 94
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 95
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
A 0 1 5 9 7 4 3 8 6 2
27/11/2013 96
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 97
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 98
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 99
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 100
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 101
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 102
Ordenação por Seleção
Exemplo:
A: vetor[1..10] de inteiro
27/11/2013 103
algoritmo “Ordenação pelo Método de Seleção”
var
A: vetor[1..10] de inteiro i,j,menor, aux: inteiro inicio
para i de 1 ate 9 faca menor <- i
para j de i+1 ate 10 faca se (A[j] < A[menor]) entao
menor <- j fimse
fimpara
aux <- A[menor] A[menor] <- A[i] A[i] <- aux fimpara
fimalgoritmo