UFSC-CTC-INE INE Estruturas de Dados

Slides:



Advertisements
Apresentações semelhantes
Ordenação de Dados em Memória
Advertisements

Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Matrizes Unidimensionais
Estruturas de Dados Marcio Gonçalves.
ESTRUTURA DE DADOS LES.
Linguagem de Programação IX Métodos de Ordenação
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
Algoritmos de Ordenação
Classificação de Dados
Análise Projeto de Algoritmos
Série de Exercícios.
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Pesquisa em Memória Primária
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
HeapSort Filas de Prioridade – Heap
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
Algoritmos e Estruturas de Dados I
FACENS – Engenharia da Computação Lógica Computacional II
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Ordenação Facilitar e aumentar a eficiência das operações de pesquisa sobre esses dados Pode ser crescente ou decrescente A seqüência de entrada, normalmente,
Classificação e Pesquisa de Dados
Classificação (Ordenação) de dados
Métodos de Pesquisa: Seqüencial e Binária
Algoritmos Escher.
Métodos de Classificação por Seleção: HeapSort
Método de Ordenação: InsertionSort
Métodos de Classificação por Seleção
Estruturas de Dados I Prof.: Sergio Pacheco Prof.: Sergio Pacheco 1 1.
5COP096 Teoria da Computação
Ordenação de Dados.
Marco Antonio Montebello Júnior
Algoritmos de Ordenação
Algoritmos de Ordenação
Insertion Sort.
ICC2 Aula 7 Fábio Nakano.
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Aula 01 BCC202 - Estrutura de Dados I Túlio Toffolo
Ordenação em memória primária
Complexidade de algoritmos e Classificação (Ordenação) de dados
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Ordenação por inserção
Aula 14.
ORDENAÇÃO POR CONTAGEM
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Listas de Prioridades Em muitas aplicações, dados de uma coleção são acessados por ordem de prioridade A prioridade associada a um dado pode ser qualquer.
Ordenação de Dados (V) UFSC-CTC-INE INE Estruturas de Dados Prof. Ronaldo S. Mello 2002/2.
Ordenação de Dados (III)
Ceça Moraes – Introdução à Programação SI1
Algoritmos de Ordenação
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
DCC 001 Programação de Computadores 2º Semestre de 2011
Métodos de Ordenação.
CLASSIFICAÇÃO DE DADOS
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Classificação Ordenação de Dados
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
ORDENAÇÃO EM TEMPO LINEAR
Métodos de Pesquisa: Sequencial e Binária
Classificação (Ordenação) de dados
USP – ICMC – SSC SSC0300 2º Semestre 2015
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Algoritmos de ordenação Estruturas avançadas de dados I
Transcrição da apresentação:

UFSC-CTC-INE INE5384 - Estruturas de Dados Ordenação de Dados Prof. Ronaldo S. Mello 2002/2

Ordenação de Dados Processo bastante utilizado na computação de uma estrutura de dados Dados ordenados garantem uma melhor performance de pesquisa a uma ED busca seqüencial evita a varredura completa de uma lista de dados busca binária só é possível se os dados estão ordenados apresenta baixa complexidade

Compromisso “A complexidade da ordenação da ED não deve exceder a complexidade da computação a ser feita na ED sem o processo de ordenação” Exemplo: deseja-se realizar uma única pesquisa a um vetor busca seqüencial  O(n) ordenação  O(n log n) Não vale a pena ordenar!

Considerações Dados estão mantidos em um vetor Elemento do vetor objeto que possui um atributo chave que deve ser mantido ordenado Um método troca(x,y) realiza a troca dos elementos presentes nas posições x e y do vetor Para fins de exemplo, números inteiros serão utilizados como elementos

Implementação Classe Ordenador início vetor inteiro[ ]; n inteiro; /* tamanho do vetor */ construtor Ordenador (REF v[ ] inteiro); n  v.lenght; se n < 1 então Exceção VetorVazio(); vetor  v; ordena(); v  vetor; fim; método ordena();

Implementação Classe Ordenador início . . . método troca(x inteiro, y inteiro); aux inteiro; aux  vetor[x]; vetor[x]  vetor[y]; vetor[y]  aux; fim;

Métodos de Ordenação Ordenação por troca Ordenação por inserção BubbleSort (método da bolha) QuickSort (método da troca e partição) Ordenação por inserção InsertionSort (método da inserção direta) BinaryInsertionSort (método da inserção direta binária) Ordenação por seleção SelectionSort (método da seleção direta) HeapSort (método da seleção em árvore) Outros métodos MergeSort (método da intercalação) BucketSort (método da distribuição de chave)

Métodos de Ordenação Simples São três BubbleSort InsertionSort SelectionSort Características fácil implementação alta complexidade comparações ocorrem sempre entre posições adjacentes do vetor

“Revisão” de Somatória Propriedade 1 (P1) Propriedade 2 (P2) n  i n (n + 1) = i = 1 2 n n   k i k i = i = 1 i = 1

BubbleSort BubbleSort é um método simples de troca Características ordena através de sucessivas trocas entre pares de elementos do vetor Características realiza varreduras no vetor, trocando pares adjacentes de elementos sempre que o próximo elemento for menor que o anterior após uma varredura, o maior elemento está corretamente posicionado no vetor e não precisa mais ser comparado após a i-ésima varredura, os i maiores elementos estão ordenados

BubbleSort Simulação de funcionamento http://math.hws.edu/TMCM/java/xSortLab

BubbleSort - Complexidade Para um vetor de n elementos, n – 1 varreduras são feitas para acertar todos os elementos n = 5 início: 4 9 2 1 5 1a V: n – 1 comparações 4 2 1 5 9 2a V: n – 2 comparações 2 1 4 5 9 . . . (n-2)a V: 2 comparações 1 2 4 5 9 (n-1)a V: 1 comparação 1 2 4 5 9 fim: 1 2 4 5 9

BubbleSort - Complexidade Definida pelo número de comparações envolvendo a quantidade de dados do vetor Número de comparações: (n - 1) + (n – 2) + ... + 2 + 1 Complexidade (para qualquer caso): n - 1  (n - 1) n i =  O(n2) 2 i = 1

BubbleSort - Implementação Classe OrdenadorBubbleSort SubClasse de Ordenador início método ordena(); i, j inteiro; para i de 0 até n-2 faça /* n-1 varreduras */ para j de 1 até n-1-i faça /* desconsidera elementos */ se vetor[ j -1 ] > vetor[ j ] então /* a direita já ordenados */ troca( j - 1, j); /* a cada iteração */ fim;

InsertionSort InsertionSort é um método simples de inserção Características do método de inserção considera dois segmentos (sub-vetores) no vetor: ordenado (aumenta) e não-ordenado (diminui) ordena através da inserção de um elemento por vez (primeiro elemento) do segmento não-ordenado no segmento ordenado, na sua posição correta

segmento não-ordenado Método de Inserção e5 e9 . . . e8 e2 segmento ordenado segmento não-ordenado e5 e8 e9 . . . e2 Inicialmente, o segmento ordenado contém apenas o primeiro elemento do vetor

InsertionSort realiza uma busca seqüencial no segmento ordenado para inserir corretamente um elemento do segmento não-ordenado nesta busca, realiza trocas entre elementos adjacentes para ir acertando a posição do elemento a ser inserido e5 e9 e8 . . . e2 e5 e8 e9 . . . e2

InsertionSort Simulação de funcionamento http://math.hws.edu/TMCM/java/xSortLab

InsertionSort - Complexidade Pior caso: vetor totalmente desordenado n = 5 início: 9 5 4 2 1 1a V: 1 comparação 5 9 4 2 1 2a V: 2 comparações 4 5 9 2 1 . . . (n-2)a V: n-2 comparações 2 4 5 9 1 (n-1)a V: n-1 comparações 1 2 4 5 9 n - 1  (n - 1) n i =  O(n2) 2 i = 1

InsertionSort - Complexidade Melhor caso: vetor já ordenado n = 5 início: 1 2 4 5 9 1a V: 1 comparação 1 2 4 5 9 2a V: 1 comparação 1 2 4 5 9 . . . (n-2)a V: 1 comparação 1 2 4 5 9 (n-1)a V: 1 comparação 1 2 4 5 9 n - 1  O(n)

InsertionSort X BubbleSort Melhor caso Pior caso InsertionSort O(n) O(n2) BubbleSort

SelectionSort SelectionSort é um método simples de seleção ordena através de sucessivas seleções do elemento de menor valor em um segmento não-ordenado e seu posicionamento no final de um segmento ordenado troca e2 e5 e8 . . . e6 e2 e5 e6 . . . e8

SelectionSort Característica particular Simulação de funcionamento realiza uma busca seqüencial pelo menor valor no segmento não-ordenado a cada iteração Simulação de funcionamento http://math.hws.edu/TMCM/java/xSortLab

SelectionSort - Complexidade Para qualquer caso troca 9 5 1 2 4 1a V: n-1 comparações 2a V: n-2 comparações 1 5 9 2 4 1 2 9 5 4 . . . (n-1)a V: 1 comparação 1 2 4 5 9 n - 1  (n - 1) n i =  O(n2) 2 i = 1

Comparação Melhor caso Pior caso InsertionSort O(n) O(n2) BubbleSort SelectionSort

Exercícios Implementar o método sort para uma subclasse OrdenadorInsertionSort da classe Ordenador Implementar o método sort para uma subclasse OrdenadorSelectionSort da classe Ordenador Melhore a complexidade do BubbleSort de modo que ele encerre a sua execução quando descobrir que o vetor já está ordenado