Escolar Documentos
Profissional Documentos
Cultura Documentos
BCC202 – Aula 15
Algoritmos e Estruturas de Dados I
QuickSort
2
QuickSort
3
QuickSort
4
QuickSort – Partição
5
QuickSort – Após a Partição
6
QuickSort – Exemplo
• Exemplo:
3 6 4 5 1 7 2
7
QuickSort – Exemplo
3 6 4 5 1 7 2
Primeira
partição
3 2 4 1 5 7 6
Segunda
partição 1 2 4 3 5 7 6
8
QuickSort – Exemplo
1 2 3 4 5 7 6
quarta
partição
3 2 4 1 5 6 7
quinta
partição 1 2 4 3 5 6 7
Final 1 2 3 4 5 6 7
9
QUICKSORT
EXEMPLO DE EXECUÇÃO
QuickSort – Execução
7 4 9 6 2 → 2 4 6 9 7
2 4 → 2 4 9 7 → 7 9
4→4 7→7
11
QuickSort: Exemplo de Execução
• Seleção do pivô
7 2 9 4 3 7 6 1 → 1 2 3 4 6 7 8 9
7 2 9 4 → 2 4 7 9 3 8 6 1 → 1 3 8 6
9→9 4→4
12
QuickSort: Exemplo de Execução (cont.)
7 2 9 4 3 7 6 1→ 1 2 3 4 6 7 8 9
2 4 3 1→ 2 4 7 9 3 8 6 1 → 1 3 8 6
9→9 4→4
13
QuickSort: Exemplo de Execução (cont.)
7 2 9 43 7 6 1→→ 1 2 3 4 6 7 8 9
2 4 3 1 →→ 2 4 7 3 8 6 1 → 1 3 8 6
9→9 4→4
14
QuickSort: Exemplo de Execução (cont.)
7 2 9 43 7 6 1→ 1 2 3 4 6 7 8 9
2 4 3 1 → 1 2 3 4 3 8 6 1 → 1 3 8 6
9→9 4→4
15
QuickSort: Exemplo de Execução (cont.)
7 2 9 43 7 6 1→ 1 2 3 4 6 7 8 9
2 4 3 1 → 1 2 3 4 7 9 7 1 → 1 3 8 6
9→9 4→4
16
QuickSort: Exemplo de Execução (cont.)
7 2 9 43 7 6 1→ 1 2 3 4 6 7 8 9
2 4 3 1 → 1 2 3 4 7 9 7 1 → 1 3 8 6
9→9 4→4
17
QuickSort: Exemplo de Execução (cont.)
• União
7 2 9 4 3 7 6 1 →1 2 3 4 6 7 7 9
2 4 3 1 → 1 2 3 4 7 9 7 → 17 7 9
9→9 4→4
18
QUICKSORT
IMPLEMENTAÇÃO RECURSIVA
QuickSort - Função
20
QuickSort - Partição
22
QUICKSORT
ANÁLISE DO ALGORITMO
Análise do QuickSort
Características:
24
Análise do QuickSort
h = O(log n)
25
Análise do QuickSort
h = O(n)
26
Análise do QuickSort
27
Análise do QuickSort
28
QUICKSORT
VANTAGENS/DESVANTAGENS
QuickSort
• Vantagens:
• É extremamente eficiente para ordenar arquivos de dados.
• Necessita de apenas uma pequena pilha como memória
auxiliar.
• Requer O(n log n) comparações em média (caso médio) para
ordenar n itens.
30
QuickSort
• Desvantagens:
• Tem um pior caso O(n2) comparações.
• Sua implementação é delicada e difícil:
§ Um pequeno engano pode levar a efeitos inesperados para
algumas entradas de dados.
• O método não é estável.
31
QUICKSORT
IMPLEMENTAÇÃO
NÃO-RECURSIVA
QuickSort Não Recursivo
33
QuickSort Não Recursivo
// ... continuação:
do {
if (dir > esq) {
QuickSort_particao(v, esq, dir, &i, &j);
TPilha_Push(&pilha_dir, j);
TPilha_Push(&pilha_esq, esq);
esq = i;
}
else {
TPilha_Pop(&pilha_dir, &dir);
TPilha_Pop(&pilha_esq, &esq);
}
} while (!TPilha_EhVazia(&pilha_dir));
}
34
Pilha de Recursão x Pilha no Explícita
35
QuickSort
36
QUICKSORT
MELHORIAS
QuickSort – Melhorias no Algoritmo
• Resultado:
• Melhoria no tempo de execução de 25% a 30%
38
Perguntas?
QUICKSORT
EXERCÍCIO
Exercício
Matrícula + 590
• Ordene em ordem crescente utilizando o algoritmo de
ordenação QuickSort, apresentado a sequência dos
números a cada passo.
41