Aula 05 Ordenação parcial

Documentos relacionados
Aula 04 Ordenação parcial

Aula 19: Métodos eficientes de ordenação

Limite assintótico para a ordenação, Ordenação em tempo linear

- Métodos simples de busca - Métodos ingênuos de ordenação (introdução)

Ordenação: Heapsort. Algoritmos e Estruturas de Dados II

Algoritmos e Estruturas de Dados I. Aula 11 Árvores AVL. Prof. Jesús P. Mena-Chalco.

Universidade Estadual de Mato Grosso do Sul Bacharelado em Ciência da Computação Algoritmos e Estruturas de Dados II Prof. Fabrício Sérgio de Paula

Ordenação. Prof. Jonas Potros

Heapsort ordenação por árvore de seleção

INF 1010 Estruturas de Dados Avançadas

Heapsort ordenação por árvore de seleção

Ordenação de Dados (III) HeapSort

Ordenação: HeapSort. Prof. Túlio Toffolo BCC202 Aula 17 Algoritmos e Estruturas de Dados I

Heapsort é um método de ordenação cujo princípio de funcionamento é o mesmo utilizado para a ordenação por seleção.

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: ESTRUTURA DE DADOS PROFESSOR: Valdemir Junior

2. Ordenação por Seleção

Métodos de Ordenação

INF111 Programação II Aulas 11, 12, 13 Ordenação

Algoritmos de Ordenação: Tempo Linear

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

Heapsort Letícia Rodrigues Bueno

Ordenação. Última alteração: 26 de Março de Transparências elaboradas por Fabiano C. Botelho e Nivio Ziviani

Aula 18 Árvores B e parâmetros de compilação

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

Aula 13: Ordenação - Heapsort. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Algoritmos e Estruturas de Dados I Aula 05: Métodos simples de ordenação (bogo Sort, selection Sort, insertion Sort, bubble Sort)

Ordenação. Última alteração: 10 de Outubro de Transparências elaboradas por Fabiano C. Botelho, Leonardo Rocha, Leonardo Mata e Nivio Ziviani

HeapSort Filas de Prioridade Heap. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

BCC202 - Estrutura de Dados I

Análise empírica de algoritmos de ordenação

MCTA028 Programação Estruturada Aula 20 Exercícios de custos de um algoritmo

Extra- Algoritmos de Ordenação

Ordenação por Seleção Métodos de Ordenação Parte 3

Métodos de Ordenação

Estruturas de Dados Algoritmos de Ordenação

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

Aula 13 Árvores Rubro-Negras

Tópico 5 Algoritmos de Ordenação. Parte I - métodos de ordenação: inserção, mergesort, heapsort e quicksort.

Universidade Federal do ABC Avaliação Disciplina Turma Professor Data Instruções para a prova (leia antes de começar): SelectionSort selectonsortrec

Ordenação. Ordenação. Introdução - Conceitos Básicos. Introdução - Conceitos Básicos

Ordenação Interna. Prof. Jonas Potros

Ordenação. Ordenação. Introdução - Conceitos Básicos. Introdução - Conceitos Básicos. Introdução - Conceitos Básicos

INF 1010 Estruturas de Dados Avançadas

Algoritmos de ordenação: Inserção e Shellsort

Aula 07: Algoritmos de busca e Listas encadeadas

Filas de prioridade. Marcelo K. Albertini. 27 de Novembro de 2014

MC3305 Algoritmos e Estruturas de Dados II. Aula 00 Apresentação. Prof. Jesús P. Mena-Chalco.

Listas de Prioridade. Fonte de consulta: Szwarcfiter, J.; Markezon, L. Estruturas de Dados e seus Algoritmos, 3a. ed. LTC.

MCTA028 Programação Estruturada Aula 19 Custos de um algoritmo e funções de complexidade

Ordenação de Dados. Ordenação de Dados

Banco de Dados. Métodos de Ordenação de Dados. Prof. Walteno Martins Parreira Jr

Métodos de Ordenação Parte 3

Filas de prioridade. Marcelo K. Albertini. 3 de Dezembro de 2013

Projeto e Análise de Algoritmos

Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

Paradigmas de programação

heapsort (int *x, int n) { int i, e, s, f, aux; /*fase de pré-processamento - cria heap inicial*/ for (i=1; i<n; i++) { e = x[i]; s = i; f = (s-1)/2;

SCC-601 Introdução à Ciência da Computação II. Ordenação e Complexidade Parte 3. Lucas Antiqueira

Ordenação. Última alteração: 31 de Agosto de Transparências elaboradas por Charles Ornelas Almeida, Israel Guerra e Nivio Ziviani

Projeto e Análise de Algoritmos

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2

Aula 05: - Recursão (parte 1)

Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I

Algoritmos e Estrutura de dados II. Fila de Prioridade e Heaps

Análise de Algoritmos

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti

BCC202 - Estrutura de Dados I

Aula 28: Listas de Prioridades

Algoritmos e Estruturas de Dados 2006/2007

Estruturas de Dados 2

MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI1

Ordenação e Busca em Arquivos

Aula 10 Árvores Adelson-Velskii e Landis

Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )

DAINF - Departamento de Informática

Projeto e Análise de Algoritmos

Processamento Cosequencial: Ordenação Interna e Externa. Thiago A. S. Pardo Leandro C. Cintra M.C.F. de Oliveira Cristina D. A.

O Problema da Ordenação Métodos de Ordenação Parte 1

Métodos de Ordenação Parte 4

3. Conteúdo de um vértice v é conteúdo dos filhos de v.

Algoritmos de Ordenação

5. Algoritmos de Ordenação

PLANO DE DISCIPLINA DISCIPLINA: Algoritmos e Programação

Conteúdo. Busca Seqüencial. Busca Binária. Algoritmos de Ordenação e Busca e sua Análise de Complexidade. Alneu de Andrade Lopes Rosane Minghim

Filas de Prioridades Letícia Rodrigues Bueno

MÉTODOS DE CLASSIFICAÇÃO EM MEMÓRIA PRIMÁRIA. George Gomes Cabral

Aula 13: Listas encadeadas (estruturas lineares)

Aula 19 Árvores Rubro-Negras

Estruturas de Dados 2

Linguagem C: Algoritmos de Ordenação

Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional

Análise de algoritmos

INF 1007 Programação II

Transcrição:

MC3305 Algoritmos e Estruturas de Dados II Aula 05 Ordenação parcial Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1

Ordenação parcial (seleção do k-éssimo maior) Consiste em obter os k primeiros elementos de um vetor ordenado com n elementos. Quando k=1 o problema se reduz a encontrar o mínimo (ou o máximo) de um conjunto de elementos. Quando k=n caímos no problema clássico de ordenação. 2

Ordenação parcial Os algoritmos de Ord. Parcial que estudaremos serão: Seleção parcial Inserção parcial Heapsort parcial Quicksort parcial ( lista 01 ) 3

Representação de árvores em vetores Slides baseados no material de aula do Prof. José Coelho de Pina (IME/USP) 4

5

Pais e filhos A[1..m] é um vetor representado por uma árvore Diremos que para qualquer índice ou nó i: floor(i/2) é o pai de i. 2*i é o filho esquerdo de i. 2*i+1 é o filho direito de i. O nó 1 não tem pai e é chamado de nó raiz. Um nó i só tem filho esquerdo se 2*i m. Um nó i só tem filho direito se 2*i+1 m. Um no i é um nó folha, se não tem filhos: 2*i> m. 6

Pais e filhos Todo nó i é raiz da sub-árvore formada por: 7

Propriedades A[1..m] é um vetor representado por uma árvore 8

Heapsort parcial 9

Heapsort parcial Utiliza um tipo abstrato de dados min-heap para informar o menor item do conjunto. 5 Usando um MIN-HEAP Na primeira iteração, o menor item que está em V[1] (raiz do heap) é trocado com o item que está em V[n-1]. 7 9 Em seguida o heap é refeito. Novamente o menor está em V[1], troque-o com V[n-2]. 12 11 10 15 Repita as duas últimas operações até que o k-ésimo menor esteja seja trocado com V[n-k]. Ao final, os k menores estão nas k últimas posições do vetor V. Animação: https://www.cs.usfca.edu/~galles/visualization/heapsort.html 10

Heapsort parcial Utiliza um tipo abstrato de dados min-heap para informar o menor item do conjunto. 5 Usando um MIN-HEAP Na primeira iteração, o menor item que está em V[1] (raiz do heap) é trocado com o item que está em V[n-1]. 7 9 Em seguida o heap é refeito. 12 Novamente o menor está em V[1], troque-o com V[n-2]. Repita as duas últimas operações até que o k-ésimo menor esteja seja trocado com V[n-k]. Ao final, os k menores estão nas k últimas posições do vetor V. 0 11 10 15 1 2 3 4 5 7 9 12 11 10 15 Animação: https://www.cs.usfca.edu/~galles/visualization/heapsort.html 5 6 7 11

Heapsort parcial 12

Heapsort parcial 13

Heapsort parcial O BuildMinHeap deve construir o heap a um custo O(n). O prodecimento MinHeapify (arruma o heap) tem um custo de O(lg(n)). O procedimento PartialHeapSort chama o procedimento MinHeapify k vezes. Complexidade: 14

Heapsort parcial O BuildMinHeap deve construir o heap a um custo O(n). O prodecimento MinHeapify (arruma o heap) tem um custo de O(lg(n)). O procedimento PartialHeapSort chama o procedimento MinHeapify k vezes. Complexidade: 15

Heapsort parcial 16

Comparação empírica dos algoritmos 17

Fonte:http://www2.dcc.ufmg.br/livros/algoritmos-edicao2/cap4/transp/completo1/cap4.pdf 18

Comparação empírica dos algoritmos Para valores de k até 1.000, o método da PartialInsertionSort é imbatível. O PartialQuicksort nunca ficar muito longe da InserçãoParcial. Na medida em que o k cresce o PartialQuicksort é a melhor opção. Para valores grandes de k, o método da PartialInsertionSort se torna ruim. Um método indicado para qualquer situação é o PartialQuicksort. O PartialHeapsort tem comportamento parecido com o do PartialQuicksort. No entano o PartialHeapsort. Fonte:http://www2.dcc.ufmg.br/livros/algoritmos-edicao2/cap4/transp/completo1/cap4.pdf 19

Atividade em laboratório 20

Atividade (1) Criar uma área no Cloud9: https://c9.io/ (2) Baixar do repositório do Tidia o arquivo: aed2-05.tgz (3) Subir o arquivo aed2-05.tgz a sua área no Cloud9 (4) Descomprimir o arquivo aed2-05.tgz (no Cloud9). Abrir um terminal (Alt-T) tar xvfz aed2 05.tgz Os arquivos da atividade estão no diretório aed2-05: cd aed2 05 ls lsh cat /proc/cpuinfo free h htop 21

Arquivo: heapparcial.c 22

Arquivo: atividade.c 23

Arquivo: atividade.c 24

Arquivo: atividade.c 25

Arquivo: atividade.c Modifique o procedimento PartialHeapSort para que devolva o número de comparações realizadas para obter os k primeiros elementos do vetor dado como entrada. N 26

Arquivo: atividade.c (solução) 27

Arquivo: atividade.c (solução) 28

Arquivo: atividade.c (solução) 29

Arquivo: atividade.c (solução) Para visualizar o manual do programa: $ man sort 30

Domains:.io.fm.to.tv 31

Domains:.io.fm.to.tv Fonte: http://en.wikipedia.org/wiki/list_of_internet_top-level_domains 32