A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Classificação de Dados

Apresentações semelhantes


Apresentação em tema: "Classificação de Dados"— Transcrição da apresentação:

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


Carregar ppt "Classificação de Dados"

Apresentações semelhantes


Anúncios Google