2. Agenda
• Algoritmos;
• Algoritmos de Ordenação;
• Algoritmos de Ordenação por Seleção;
• Árvores Binárias;
• Heapsort;
• Vantagens X Desvantagens.
3. Algoritmos podem ser descritos como uma série de passos para
execução de uma tarefa. Este conjunto de passos deve ser finito.
O objetivo destes passos pode ser efetuar um cálculo de imposto,
um cadastro de cliente, exibir os resultados de uma busca, gerar
um relatório.
Algoritmos
4. A tarefa de extrair conteúdo relevante de uma coleção de dados, pode ser
trabalhosa em situações onde os dados não estão organizados. O objetivo
dos algoritmos de ordenação é colocar em uma determinada ordem total ou
parcialmente uma série de dados ou elementos. Esta ordenação pode ser
numérica ou lexicográfica.
Algoritmos de Ordenação
5. A ordenação por seleção utiliza-se da estratégia de passar sempre
o menor ou maior valor da lista para a primeira posição. O
segundo menor ou maior valor irá para segunda posição até o fim
da lista e assim sucessivamente. Os elementos já reordenados são
desconsiderados
Algoritmos de Ordenação por Seleção
6. De acordo com Goodrich (2013), o gargalo neste tipo
de algoritmo está em repetir a seleção de um segundo,
terceiro e assim sucessivamente menor número para
efetuar a ordenação. Onde se faz necessário percorrer
todos os elementos da lista.
Algoritmos de Ordenação por Seleção
7. Este tipo de algoritmo possui uma relação linear com o número de
elementos, o que corresponde a dizer que quanto maior o número de
elementos maior o tempo necessário para ordenação. A disposição dos dados
não influencia tanto no tempo para execução. Dados completamente
desorganizados serão ordenados com o mesmo custo.
Algoritmos de Ordenação por Seleção
8. Uma árvore binária é uma forma alternativa de
representar um vetor. Ela pode ou não possuir
elementos. Quando possui ao menos um elemento,
este pode possuir ponteiros para outros dois nós, um a
esquerda, outro a direita.
Árvores Binárias
9. Os elementos contidos são chamados de “nós”. “Pais”
são os nós que possuem nós abaixo, os nós que
possuem pais são chamados de “filhos”. Por fim, os
últimos nós que não possuem filhos são denominados
“folhas”.
Árvores Binárias
10. Para localizar o elemento pai i/2, o filho da esquerda 2i
e o filho da direita 2i + 1.
Árvores Binárias - Navegação
11. Criado em 1964 por Robert W. Floyd e aprimorado por
J.W.J Willians o Heapsort é um algoritmo de ordenação
do tipo ordenação por seleção.
Heapsort
Fonte:
http://www.computer.org/cms/Awards/images/medium/robertfloyd.jpg
12. Quando deseja-se ordenar os elementos de forma
crescente, cria-se um heap mínimo. Mantendo o maior
dado na raiz (por isso o conceito de árvore). Logo, para
uma ordenação decrescente, deve-se empregar o
heap-máximo, colocando o menor elemento na raiz.
Heapsort
14. O algoritmo Heapsort pode ser resumido em:
selecionar o menor ou maior elemento, trocar com o
elemento presente na primeira posição. Essas
operações devem ser repetidas para todos os
elementos seguindo a forma (n - 1), (n - 2) e (n - N).
Heapsort
15. • Elementos já ordenados são desconsiderados;
• Para definir o elemento raiz, deve ser chamada a
função heapify;
Heapsort
16. A complexidade pode ser descrita por: O (n ln n), provando que
ele é estável para grandes quantidades de elementos, quando
comparado com outros algoritmos de ordenação como o Bubble
Sort e o Selection Sort, os quais a complexidade pode ser descrita
por O (n²).
Heapsort - Complexidade
17. Muitos sistemas operações e linguagens de programação fazem
uso do Heapsort para o gerenciamento de filas com prioridade,
pois o tempo de execução, estabilidade e o custo de memória em
situações onde os dados estão totalmente desordenados é
consistente com outras situações.
Heapsort – Utilização
18. • Elementos já ordenados são desconsiderados;
• Para definir o elemento raiz, deve ser chamada a
função heapify;
Heapsort
19. • Pior caso O (n ln n);
• Mais rápido que o Quicksort;
• Previsível.
Heapsort - Vantagens
27. Referências
[1] GOODRICH, T. Michael et al. Data Structures & Algorithms: In Python. 1. ed. EUA:
Wiley, 2013.
[2] CORMEN, H. Thomas et al. Introduction to Algorithms. 3. ed. EUA: MIT Press,
2009.
[3] GUIMARÃES, Gleyser. O Algoritmo Heapsort. 2013. UFCG Pet. São Paulo.
Disponível em:
<http://www.dsc.ufcg.edu.br/~pet/jornal/maio2013/materias/historia_da_comput
acao.html>. Acesso em: 08 nov. 2015.
[4] FARIAS, Farias. Estrutura de Dados e Algoritmos – Aula 9. 2015. UFRJ Pet. Rio de
Janeiro. Disponível em: <http://www.cos.ufrj.br/~rfarias/cos121/aula_09.html>.
Acesso em: 08 nov. 2015.