Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Classificação de Dados
UPE – Caruaru – Sistemas de Informação Disciplina: Estrutura de Dados e Arquivo Prof.: Paulemir G. Campos Classificação de Dados 3/25/2017 EDA - Prof. Paulemir Campos
2
EDA - Prof. Paulemir Campos
Conteúdo Classificação de Dados: Bubble-sort Quick-sort Heap-sort Merge-sort Aplicações 3/25/2017 EDA - Prof. Paulemir Campos
3
Classificação de Dados: Introdução
Conjunto Ordenado: Elementos dispostos sob uma determinada ordem. Objetivos da Classificação: Facilitar a recuperação; Tornar mais eficiente o acesso aos dados. Tipos de Classificação: Interna: Todos os registros estão na memória principal; Externa: Alguns registros podem estar em dispositivos auxiliares de armazenamento. 3/25/2017 EDA - Prof. Paulemir Campos
4
Classificação de Dados: Introdução
Veremos quatro algoritmos de classificação interna de dados: Classificação por Troca Algoritmo Bubble-sort Algoritmo Quick-sort Classificação por Seleção Algoritmo Heap-sort Classificação por Intercalação Algoritmo Merge-sort 3/25/2017 EDA - Prof. Paulemir Campos
5
Classificação por Troca
Método Bubble-Sort A cada passo, cada elemento de um vetor C (vetor de chaves) é comparado com o seu sucessor, sendo os dois trocados de posição caso estejam fora de ordem; São executados passos sucessivos, até que não ocorram trocas, estando assim o vetor classificado. 3/25/2017 EDA - Prof. Paulemir Campos
6
Classificação por Troca
Método Bubble-Sort (Algoritmo) BubbleSort(inteiro V[N], N){ /* FALSE -> 0 e TRUE -> 1 */ inteiro ordenado, j, temp ordenado = FALSE enquanto NÃO(ordenado) { ordenado = TRUE para j = 1 até (N-1) incremento 1 { se V[j] > V[j+1] { temp = V[j] V[j] = V[j+1] V[j+1] = temp ordenado = FALSE} } 3/25/2017 EDA - Prof. Paulemir Campos
7
Classificação por Troca
Método Bubble-Sort (Exemplo) Seja o conjunto X={14,21,30,7,56,28,24,33,47,50,32}. Ordená-lo segundo o método Bubble-Sort. Etapa 14 21 30 7 56 28 24 33 47 50 32 1 2 3 4 5 3/25/2017 EDA - Prof. Paulemir Campos
8
EDA - Prof. Paulemir Campos
Classificação por Troca Método Bubble-Sort (Observações) O seu princípio básico de funcionamento é conduzir os maiores elementos para o fim do vetor; É um algoritmo de ordenação bastante simples; Complexidade de Tempo: O(n2). 3/25/2017 EDA - Prof. Paulemir Campos
9
Classificação por Troca
Método Quick-Sort Sejam X um conjunto com n elementos e p um elemento qualquer de X, denominado pivot. O método consiste em: 1) particionar x em dois subconjuntos X1 e X2 de modo que: todo elemento de X1 seja menor ou igual a p todo elemento de X2 seja maior que p Obs. p particiona o conjunto x de tal modo que todos os elementos de x1 são menores que qualquer elemento de x2 Exemplo. x={14,21,30,7,56,28,24,33,47,50,32} para p = 30 x1={14, 21, 7, 28, 24, 30} e x2={56, 33, 47, 50, 32} para p = 21 x1={14, 7, 21} e x2={30, 28, 24,56, 33, 47, 50, 32} 3/25/2017 EDA - Prof. Paulemir Campos
10
Classificação por Troca
Método Quick-Sort 2) classificar x1 e x2 3) realizar a união de x1 e x2, nessa ordem Obs.: O passo 2 sugere que este método pode ser definido de modo recursivo. Na prática, os subconjuntos x1 e x2 podem permanecer fisicamente dentro de x. Assim, após a classificação recursiva desses, o conjunto x estará classificado. Neste caso a união dos subconjuntos não é necessária. 3/25/2017 EDA - Prof. Paulemir Campos
11
Classificação por Troca
Método Quick-Sort (Algoritmo) QuickSort(inteiro x[N], min, max) início /* particionar o conjunto x da posição min até max sendo que */ /* o pivot ficará na posição j, min j max */ se (min max) então j = Particionar(x[N], min, max); QuickSort(x[N], min, j-1); QuickSort(x[N], j+1, max); fim-se fim 3/25/2017 EDA - Prof. Paulemir Campos
12
Classificação por Troca
Método Quick-Sort (Função Particionar) inteiro Particionar(inteiro x[N], min, max) início inteiro pivot, down, up, temp; pivot = x[min]; down = min; up = max; enquanto (down < up) faça enquanto ((x[down] <= pivot) E (down<up)) faça down += 1; // sobe no vetor fim-enquanto enquanto (x[up] > pivot) faça up -=1; // desce no vetor 3/25/2017 EDA - Prof. Paulemir Campos
13
Classificação por Troca
Método Quick-Sort (Função Particionar) se (down < up) então // troca elementos do vetor x[N] temp = x[down]; x[down] = x[up]; x[up] = temp; fim-se fim-enquanto x[min]=x[up]; x[up]=pivot; j = up; retorne j; fim 3/25/2017 EDA - Prof. Paulemir Campos
14
Classificação por Troca
Método Quick-Sort (Exemplo) Seja x={14,21,30,7,56,28,24,33,47,50,32}. Classificá-lo usando o método Quick-Sort. Pivot 14 21 30 7 56 28 24 33 47 50 32 21 e 47 7, 24, 32 e 50 14, 28 e 33 3/25/2017 EDA - Prof. Paulemir Campos
15
Classificação por Troca
Método Quick-Sort (Observações) É o mais rápido e simples algoritmo de ordenação; Usa o princípio de divide-e-conquista; Complexidades de Tempo Caso Médio: O(n . log n); Pior Caso (muito raro): O(n2). 3/25/2017 EDA - Prof. Paulemir Campos
16
Classificação por Seleção
Método Heap-Sort Utiliza a seleção em árvore binária para a obtenção dos elementos do vetor C na ordem desejada. Possui duas fases distintas: Construção da árvore binária heap com os elementos do vetor C; Usa-se este heap construído para a seleção dos elementos na ordem desejada. 3/25/2017 EDA - Prof. Paulemir Campos
17
Classificação por Seleção
Método Heap-Sort Árvore Binária heap é um tipo de árvore binária em que todos os descendentes de cada nó são menores que seus nós ascendentes. 3/25/2017 EDA - Prof. Paulemir Campos
18
Classificação por Seleção
Método Heap-Sort Exemplo de uma Árvore Binária Heap 25 1 17 23 2 3 15 8 19 12 4 7 5 6 3/25/2017 EDA - Prof. Paulemir Campos
19
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 1. Obter a árvore binária heap equivalente ao vetor V. 15 15 1 1 17 12 25 23 2 3 2 3 25 8 19 23 17 8 19 12 4 7 7 5 6 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
20
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 1. Obter a árvore binária heap equivalente ao vetor V. (Continuação) 25 25 1 1 15 23 17 23 2 3 2 3 17 8 19 12 15 8 19 12 4 7 7 5 6 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
21
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 2. Ordenar em ordem crescente o vetor V usando a árvore binária heap obtida no passo 1 25 23 1 1 17 23 17 19 2 3 2 3 15 8 19 12 15 8 12 25 4 7 7 5 6 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
22
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 2. Ordenar em ordem crescente o vetor V usando a árvore binária heap obtida no passo 1 (continuação do passo 2) 19 17 1 1 17 12 15 12 2 3 2 3 15 8 23 25 8 19 23 25 4 7 7 5 6 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
23
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 2. Ordenar em ordem crescente o vetor V usando a árvore binária heap obtida no passo 1 (continuação do passo 2) 15 12 1 1 8 12 8 15 2 3 2 3 17 19 23 25 17 19 23 25 4 7 7 5 6 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
24
Classificação por Seleção
Método Heap-Sort (Exemplo) Dado o V={15,17,12,25,8,19,23} obter usando uma árvore binária tipo heap esses elementos em ordem crescente. 2. Ordenar em ordem crescente o vetor V usando a árvore binária heap obtida no passo 1 (continuação do passo 2) 8 1 12 15 V = {8, 12, 15, 17, 19, 23, 25} 2 3 17 19 23 25 7 5 6 4 3/25/2017 EDA - Prof. Paulemir Campos
25
EDA - Prof. Paulemir Campos
Classificação por Seleção Método Heap-Sort (Observações) É um algoritmo ótimo; Complexidade de Tempo: O(n . log n); Não requer espaço extra de memória; Na prática é um pouco mais lento do que o Quick-Sort. 3/25/2017 EDA - Prof. Paulemir Campos
26
Classificação por Intercalação
Método Merge-Sort O princípio de funcionamento deste algoritmo é o seguinte: - dividir o vetor original em n sub-partes de tamanho 1; - intercalar os pares de sub-partes adjacentes, da esquerda para a direita em ordem crescente; - repetir o passo anterior até obter um único vetor de tamanho n, que evidentemente estará ordenado. 3/25/2017 EDA - Prof. Paulemir Campos
27
Classificação por Intercalação
Método Merge-Sort (Exemplo) 3/25/2017 EDA - Prof. Paulemir Campos
28
EDA - Prof. Paulemir Campos
Classificação por Intercalação Método Merge-Sort (Observações) Usa o princípio de divide-e-conquista; É um algoritmo ótimo; Complexidades de Tempo: O(n . log n); Desvantagem Requer espaço extra de memória do tamanho do vetor original para uso temporário. Na prática é um pouco mais lento do que o Quick-Sort. 3/25/2017 EDA - Prof. Paulemir Campos
29
Classificação de Dados: Aplicações
Os métodos de classificação interna vistos nesta aula podem ser aplicados para se obter uma ordenação de um vetor de chave de uma determinada tabela, desde de que essas chaves sejam números inteiros. 3/25/2017 EDA - Prof. Paulemir Campos
30
EDA - Prof. Paulemir Campos
Referências Veloso, P. et al. Estrutura de Dados. Rio de Janeiro: Editora Campus, 1996. 3/25/2017 EDA - Prof. Paulemir Campos
31
EDA - Prof. Paulemir Campos
Links Interessantes Bubble-Sort: Quick-Sort: Heap-Sort: Merge-Sort: 3/25/2017 EDA - Prof. Paulemir Campos
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.