You are on page 1of 56

Construção de

Algoritmos
Ordenação
Ordenação
 O conceito de um conjunto ordenado de elementos
tem considerável impacto sobre nossa vida
cotidiana.
 Exemplos:
◦ Localizar um número telefônico em catálogo;
◦ Procurar um livro em biblioteca tradicional ou virtual;
◦ Saber qual o próximo documento a ser impresso pela
impressora em um departamento da empresa;
◦ Saber qual o próximo processo a ser executado pelo
processador de uma máquina qualquer; etc...
Classificação
(Sorting)
Processo de organizar ítens em ordem
(de)crescente, segundo algum critério.
 Também chamado de ordenação.
 Aplicações que utilizam-se de dados classificados
◦ Preparação de dados para facilitar pesquisas futuras
Exemplo: dicionários e listas telefônicas
◦ Agrupar ítens que apresentam mesmos valores
Para eliminação dos elementos repetidos
◦ Exclusão entre ítens presentes em mais de um arquivo
Para combinação de dados presentes nos vários arquivos
Para consolidação dos vários arquivos em um único
Definições
 Os algoritmos de classificação podem
ser categorizados:
◦ Internos: se os registros a serem
ordenados estiverem na RAM.
◦ Externos: se os registros a serem
ordenados estiverem em armazenamento
auxiliar (disco).
 Classificação local: realização sobre a
mesma área física onde se encontram as
chaves.
 Classificação estável: é quando
preserva-se a ordem relativa original dos
registros com mesmo valor de chave.
 Métodos Instáveis: a ordem relativa dos
itens com chaves iguais é alterada durante
o processo de ordenação
Análise de
Desempenho
A eficiência de tempo é calculada pelo número de
operações críticas efetuadas.
 Operações críticas:
1. Comparação entre chaves;
2. Movimentação de registros ou de ponteiros para
registros;
3. Troca de dois registros.
Principais Categorias de
Métodos
 Classificação por Trocas
 Classificação por Seleção
 Classificação por Inserção
 Classificação por Intercalação
Classificação por Trocas
 Caracteriza-se pela comparação aos pares de
chaves, trocando-as de posição caso estejam
fora de ordem no par.
◦ BubbleSort (Bolha)
◦ QuickSort
BubleSort
 Elementos maiores são mais “leves”
◦ Sobem como bolhas até suas posições corretas
 Quando dois elementos estão fora de ordem
◦ Inverte: trocam de posição
BubleSort
 Primeiro elemento é comparado com o segundo
◦ Se uma inversão é encontrada então faça a troca
 Segundo elemento é comparado com o terceiro
◦ Se uma inversão é encontrada faça a troca
 ....
 Processo continua até que o penúltimo elemento seja
comparado com o último
◦ Garante que o elemento de maior valor seja levado
para a última posição
 Ordenação continua, com o posicionamento do
segundo maior elemento, do terceiro etc, até que todo
o vetor esteja ordenado
Exemplo
Vetor Original: 25 48 37 12 57 86 33 92
Vetor[0]=25
Vetor[1]=48
Vetor[2]=37
Vetor[3]=12
Vetor[4]=57
Vetor[5]=86
Vetor[6]=33
Vetor[7]=92
Método da bolha - exemplo
25 48 37 12 57 86 33 92
25>48?
Não
Método da bolha - exemplo
25 48 37 12 57 86 33 92
48>37? Sim,
troca!
Método da bolha - exemplo
25 37 48 12 57 86 33 92
Método da bolha - exemplo
25 37 48 12 57 86 33 92
48>12? Sim,
troca!
Método da bolha - exemplo
25 37 12 48 57 86 33 92
Método da bolha - exemplo
25 37 12 48 57 86 33 92
48>57?
Não
Método da bolha - exemplo
25 37 12 48 57 86 33 92
57>86?
Não
Método da bolha - exemplo
25 37 12 48 57 86 33 92
86>33? Sim,
troca!
Método da bolha - exemplo
25 37 12 48 57 33 86 92
Método da bolha - exemplo
25 37 12 48 57 33 86 92
86>92?
Não
Método da bolha - exemplo
25 37 12 48 57 33 86 92

Fim da primeira passada
Método da bolha - exemplo
25 37 12 48 57 33 86 92
25>37?
Não
Método da bolha - exemplo
25 37 12 48 57 33 86 92

37>12? Sim,
troca!
Método da bolha - exemplo
25 12 37 48 57 33 86 92
Método da bolha - exemplo
25 12 37 48 57 33 86 92

37>48?
Não
Método da bolha - exemplo
25 12 37 48 57 33 86 92

48>57?
Não
Método da bolha - exemplo
25 12 37 48 57 33 86 92

57>33? Sim,
troca!
Método da bolha - exemplo
25 12 37 48 33 57 86 92
Método da bolha - exemplo
25 12 37 48 33 57 86 92

57>86?
Não
Método da bolha - exemplo
25 12 37 48 33 57 86 92

Fim da segunda passada
Método da bolha - exemplo
25 12 37 48 33 57 86 92

25>12? Sim,
troca!
Método da bolha - exemplo
12 25 37 48 33 57 86 92
Método da bolha - exemplo
12 25 37 48 33 57 86 92

25>37?
Não
Método da bolha - exemplo
12 25 37 48 33 57 86 92

37>48?
Não
Método da bolha - exemplo
12 25 37 48 33 57 86 92

48>33? Sim,
troca!
Método da bolha - exemplo
12 25 37 33 48 57 86 92
Método da bolha - exemplo
12 25 37 33 48 57 86 92

48>57?
Não
Método da bolha - exemplo
12 25 37 33 48 57 86 92

Fim da terceira passada
Método da bolha - exemplo
12 25 37 33 48 57 86 92

12>25?
Não
Método da bolha - exemplo
12 25 37 33 48 57 86 92

25>37?
Não
Método da bolha - exemplo
12 25 37 33 48 57 86 92

37>33? Sim,
troca!
Método da bolha - exemplo
12 25 33 37 48 57 86 92
Método da bolha - exemplo
12 25 33 37 48 57 86 92

37>48?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

Fim da quarta passada
Método da bolha - exemplo
12 25 33 37 48 57 86 92

12>25?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

25>33?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

33>37?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

Fim da quinta passada
Método da bolha - exemplo
12 25 33 37 48 57 86 92

12>25?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

25>33?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

Fim da sexta passada
Método da bolha - exemplo
12 25 33 37 48 57 86 92

12>25?
Não
Método da bolha - exemplo
12 25 33 37 48 57 86 92

Fim da sétima passada
Método da bolha - exemplo
Vetor final ordenado:

12 25 33 37 48 57 86 92
Análise Informal
 Melhor caso
◦ Quando o vetor já se encontra ordenado =>
nenhuma troca ocorre na primeira varredura.
 Pior caso
◦ Quando o vetor se encontra na ordem inversa a
desejada.
◦ A cada varredura apenas uma chave será colocada
em sua posição definitiva.