Você está na página 1de 88

HEAP

SORT
Algoritmos de Ordenação - Estrutura de Dados 1

ENTER

Emerson Lucena (1538695), Gustavo César (242424) e Yaslim Soares (1538806)


SUMÁRIO
1. Heap Sort (Funcionamento);

01
2. Ambiente de Testes;
02

03 3. Resultados;
a. Tabela;
04 b. Gráfico.

4. Conclusões.
01

02
01.
03 HEAP SORT
04

Como funciona esse Heap Sort?


01

02

03 Neste algoritmo, a ordenação é feita


por meio de uma árvore!
04
HEAP SORT

01 A nossa árvore será estática, ou seja, implementada em um vetor, que


será passado como parâmetro.
02
Pai: i;
Filho: i*2 + 1;
03
Filho2: i*2 + 2.
04
A principal característica dessa nossa árvore é que qualquer nó pai
tem que ser maior que os seus filhos diretos (se existir).
HEAP SORT - ÁRVORE
VETOR
01 3
[3, 6, 2, 1, 7]
02

03
6 2
04

1 7
HEAP SORT - ÁRVORE C/ HEAP

VETOR
01 7
[7, 6, 2, 1, 3]
02

03
6 2
04

1 3
01

02 Uma vez criada a Heap, o maior


03 elemento do vetor será a raiz da árvore
c/ Heap, e, com isso, podemos aplicar
04 uma lógica para a ordenação dos
elementos.
01

02 A ideia seria pegar o primeiro elemento do


03 vetor (raiz da Heap) e trocar ele de
posição com o último elemento da Heap.
04 Após isso, iremos reconstruir a nossa Heap
desconsiderando o último elemento.
01

02

03 Esse processo irá se repetir até que o


04 vetor esteja completamente ordenado.
HEAP SORT

01

02
VETOR
03 [3, 6, 2, 1, 7]
04
HEAP SORT
VETOR
01 3
[3, 6, 2, 1, 7]
0
02

03

04
HEAP SORT
VETOR
01 3
[3, 6, 2, 1, 7]
0 1
02

03
6
04
HEAP SORT
VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2
02

03
6 2
04
HEAP SORT
VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1
HEAP SORT
VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 5

VETOR
01 3 CONSTRUÇÃO DA HEAP
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 >? 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04
>?
1 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 7, 2, 1, 6]
0 1 2 3 4
02

03
7 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 7, 2, 1, 6]
0 1 2 3 4
02

03
7 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 7, 2, 1, 6]
0 1 2 3 4
02

03
7 >? 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 7, 2, 1, 6]
0 1 2 3 4
02

>?
03
7 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 7, 2, 1, 6]
0 1 2 3 4
02

03
7 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 3, 2, 1, 6]
0 1 2 3 4
02

03
3 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 3, 2, 1, 6]
0 1 2 3 4
02

03
3 2
04

1 >? 6
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 3, 2, 1, 6]
0 1 2 3 4
02

03
3 2
04

>?
1 6
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 3, 2, 1, 6]
0 1 2 3 4
02

03
3 2
04

1 6
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 6, 2, 1, 3]
0 1 2 3 4
02

03
6 2
04

1 3
HEAP SORT
Tamanho: 5

VETOR
01 7
[7, 6, 2, 1, 3]
0 1 2 3 4
02

03
6 2
04

1 3
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 5

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3 4
02

03
6 2
04

1 7
HEAP SORT
Tamanho: 4

VETOR
01 3 RECONSTRUÇÃO DA HEAP
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1 >?
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 >? 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

>?
03
6 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 3
[3, 6, 2, 1, 7]
0 1 2 3
02

03
6 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

>?
1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 6
[6, 3, 2, 1, 7]
0 1 2 3
02

03
3 2
04

1
HEAP SORT
Tamanho: 4

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2 3
02

03
3 2
04

6
HEAP SORT
Tamanho: 4

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2 3
02

03
3 2
04

6
HEAP SORT
Tamanho: 3

VETOR RECONSTRUÇÃO DA HEAP


01 1
[1, 3, 2, 6, 7]
0 1 2
02

03
3 2
04
HEAP SORT
Tamanho: 3

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2
02

03
3 2
04
HEAP SORT
Tamanho: 3

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2
02

03
3 >? 2
04
HEAP SORT
Tamanho: 3

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2
02

03
3 2
04
HEAP SORT
Tamanho: 3

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2
02

>?
03
3 2
04
HEAP SORT
Tamanho: 3

VETOR
01 1
[1, 3, 2, 6, 7]
0 1 2
02

03
3 2
04
HEAP SORT
Tamanho: 3

VETOR
01 3
[3, 1, 2, 6, 7]
0 1 2
02

03
1 2
04
HEAP SORT
Tamanho: 3

VETOR
01 3
[3, 1, 2, 6, 7]
0 1 2
02

03
1 2
04
HEAP SORT
Tamanho: 3

VETOR
01 2
[2, 1, 3, 6, 7]
0 1 2
02

03
1 3
04
HEAP SORT
Tamanho: 3

VETOR
01 2
[2, 1, 3, 6, 7]
0 1 2
02

03
1 3
04
HEAP SORT
Tamanho: 2

VETOR RECONSTRUÇÃO DA HEAP


01 2
[2, 1, 3, 6, 7]
0 1
02

03
1
04
HEAP SORT
Tamanho: 2

VETOR
01 2
[2, 1, 3, 6, 7]
0 1
02

03
1
04
HEAP SORT
Tamanho: 2

VETOR
01 2
[2, 1, 3, 6, 7]
0 1
02

03
1
04
HEAP SORT
Tamanho: 2

VETOR
01 2
[2, 1, 3, 6, 7]
0 1
02

>?
03
1
04
HEAP SORT
Tamanho: 2

VETOR
01 2
[2, 1, 3, 6, 7]
0 1
02

03
1
04
HEAP SORT
Tamanho: 2

VETOR
01 1
[1, 2, 3, 6, 7]
0 1
02

03
2
04
HEAP SORT
Tamanho: 2

VETOR
01 1
[1, 2, 3, 6, 7]
0 1
02

03
2
04
HEAP SORT
Tamanho: 1

VETOR
01 1
[1, 2, 3, 6, 7]
0
02

03

04
HEAP SORT
Tamanho: 0

01

02

03
VETOR
[1, 2, 3, 6, 7]
04
01
02.
02 AMBIENTE DE
03
TESTES
04

Equipamentos e configurações
utilizados durante a análise.
EQUIPAMENTOS:
01

02 - Processador: Intel Core i3-4150 (3.50GHz)

03 - Memória: 8GB (DDR3)


04 - Sistema Operacional: Ubuntu 9.3.0
- Compilador: gcc 9.3.0
01

02
03.
03 RESULTADOS
04

Resultados obtidos após os testes


TABELA - DADOS

01
VETOR COM 100 ELEMENTOS
MÉDIAS DE
LISTA DECRESCENTE CRESCENTE ALEATÓRIO
TEMPO
ALGORITMO Tempo(s) Comp. Trocas Tempo(s) Comp. Trocas Tempo(s) Comp. Trocas
02 Heap Sort 0,000010 184 517 0,000010 264 641 0,000011 239 577 0,000010
Bubble Sort 0,000034 4950 4950 0,000017 4950 0 0,000033 4950 2526 0,000028
03 Select Sort 0,000017 4950 50 0,000013 4950 0 0,000016 4950 94 0,000015
Quick Sort 0,000004 4950 50 0,000003 4950 0 0,000008 1009 162 0,000005

04 Insertion
Sort 0,000016 99 4950 0,000001 99 0 0,000010 99 2526 0,000009
Shell Sort 0,000005 342 230 0,000003 342 0 0,000009 342 438 0,000006
Merge Sort 0,000012 554 1344 0,000011 514 1334 0,000015 732 1344 0,000013
TABELA - DADOS

VETOR COM 1000 ELEMENTOS


01 LISTA DECRESCENTE CRESCENTE ALEATÓRIO
MÉDIAS DE
TEMPO
ALGORITMO Tempo(s) Comp. Trocas Tempo(s) Comp. Trocas Tempo(s) Comp. Trocas
02 Heap Sort 0,000119 3449 8317 0,000125 4445 9713 0,000142 4034 9065 0,000129
Bubble
Sort 0,003199 499500 499496 0,001411 499500 0 0,002619 499500 248407 0,002410
03 Select Sort 0,001505 499500 501 0,001144 499500 0 0,001203 499500 989 0,001284
Quick Sort 0,000030 499500 500 0,000028 499500 0 0,000097 14518 2350 0,000052
04 Insertion
Sort 0,001691 999 499496 0,000006 999 0 0,000854 999 248407 0,000850
Shell Sort 0,000056 5457 3917 0,000033 5457 0 0,000130 5457 8638 0,000073
Merge Sort 0,000131 7045 19952 0,000128 6930 19952 0,000184 10701 19952 0,000148
TABELA - DADOS

VETOR COM 10000 ELEMENTOS


01 LISTA DECRESCENTE CRESCENTE ALEATÓRIO
MÉDIAS DE
TEMPO
ALGORITMO Tempo(s) Comp Trocas Tempo(s) Comp Trocas Tempo(s) Comp Trocas

02 Heap Sort 0,001547 51204


499950
116715 0,001411 60002 131458 0,001430 56887 124222 0,001463

Bubble Sort 0,212153 00 49994541 0,089829 49995000 0 0,198343 49995000 25088044 0,166775
03 499950
Select Sort 0,142744 00 5204 0,088141 49995000 0 0,091670 49995000 9990 0,107518
499950
04 Quick Sort 0,000259 00 5000 0,000255 49995000 0 0,001097 207297 30213 0,000537
Insertion Sort 0,091172 9999 49994541 0,000031 9999 0 0,080670 9999 25088044 0,057291
Shell Sort 0,000451 75243 53454 0,000281 5457 0 0,002093 75243 166497 0,000942
Merge Sort 0,000910 89189 267232 0,000922 6930 267232 0,002341 140518 267232 0,001391
GRÁFICOS
100 ELEMENTOS - DECRESCENTE
MENOR TEMPO:
01 Quick Sort
0,000004s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,000034s
GRÁFICOS
100 ELEMENTOS - CRESCENTE
MENOR TEMPO:
01 Insertion Sort
0,000001s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,000017s
GRÁFICOS
100 ELEMENTOS - ALEATÓRIO
MENOR TEMPO:
01 Quick Sort
0,000008s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,000033s
GRÁFICOS
1000 ELEMENTOS - DECRESCENTE
MENOR TEMPO:
01 Quick Sort
0,000030s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,003199s
GRÁFICOS
1000 ELEMENTOS - CRESCENTE
MENOR TEMPO:
01 Insertion Sort
0,000006s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,001411s
GRÁFICOS
1000 ELEMENTOS - ALEATÓRIO
MENOR TEMPO:
01 Quick Sort
0,000097s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,002619s
GRÁFICOS
10000 ELEMENTOS - DECRESCENTE
MENOR TEMPO:
01 Quick Sort
0,000259s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,212153s
GRÁFICOS
10000 ELEMENTOS - CRESCENTE
MENOR TEMPO:
01 Insertion Sort
0,000031s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,089829s
GRÁFICOS
10000 ELEMENTOS - ALEATÓRIO
MENOR TEMPO:
01 Quick Sort
0,001097s
02

03

04 MAIOR TEMPO:
Bubble Sort
0,198343s
01

02
04.
03 CONCLUSÃO
04

O que podemos concluir com


esses resultados?
COMPLEXIDADES

01

02

03

04
COMPLEXIDADES
HeapSort: Em todos os casos: O(n Log n).

01

02

03

04
INTEGRANTES DA EQUIPE

Emerson Yaslim Gustavo


01

02

03

04
01 OBRIGADO PELA ATENÇÃO!
02

03
“O homem não teria alcançado o possível se,
repetidas vezes, não tivesse tentado o impossível.”
04

Você também pode gostar