BCC202 - Estrutura de Dados I

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I

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

BCC202 - Estrutura de Dados I

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

BCC202 - Estrutura de Dados I

Ordenação. Prof. Jonas Potros

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

Métodos de Ordenação

Extra- Algoritmos de Ordenação

Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)

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

Métodos de Ordenação Parte 2

BCC202 - Estrutura de Dados I

Projeto e Análise de Algoritmos

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;

CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.

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

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

ORDENAÇÃO DE ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Projeto e Análise de Algoritmos

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I

ALGORITMOS DE ORDENAÇÃO

Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.

BCC202 - Estrutura de Dados I

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

Análise de Algoritmos

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

Métodos de ordenação. Bubble sort:

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

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

Algoritmos e Estrutura de Dados

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

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Algoritmos de Ordenação

Listas (Parte 1) Túlio Toffolo BCC202 Aula 09 Algoritmos e Estruturas de Dados I

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

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho BCC402 Aula 04 Algoritmos e Programação Avançada

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

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

Análise e Comparação de Algoritmos Implementados em Java

Métodos de Ordenação Parte I

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

BCC402 Algoritmos e Programação Avançada Prof. Marco Antonio M. Carvalho Prof. Túlio Ângelo M. Toffolo 2011/1

Teoria da Computação Aula 9 Noções de Complexidade

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

Recursividade, Tentativa e Erro

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

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

Complexidade de Algoritmos

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

Complexidade de Algoritmos

Métodos de Ordenação Parte 4

Classificação Externa: Geração de Partições Classificadas

Algoritmos de ordenação: Bucketsort, Radixsort e Seleção

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

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

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

Ordenação por Intercalação Métodos de Ordenação Parte 4

Métodos de Classificação

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

UNIVERSIDADE DA BEIRA INTERIOR

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

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

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

ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO EM TEMPO LINEAR

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009

Carlos Eduardo Batista. Centro de Informática - UFPB

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2009/2010

Simulador didático de testes de algoritmos de ordenação

Ordenação (Parte 1) Prof. Túlio Toffolo BCC202 Aula 13 Algoritmos e Estruturas de Dados I

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

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

Métodos de Ordenação Parte 3

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

Ordenação de Vectores

PESQUISA EM INFORMÁTICA -COMO ESCREVER O TEXTO. Prof. Angelo Augusto Frozza, M.Sc.

Lista de Exercícios 04

Ordenação em Memória Primária Estrutura de Dados II

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

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Prof. A. G. Silva. 25 de abril de Prof. A. G. Silva INE5231 Computação Científica I 25 de abril de / 68

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

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

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

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

Transcrição:

BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: reifortes@iceb.ufop.br Material elaborado com base nos slides do Prof. Túlio Toffolo (curso de 2013/01). 2013/02

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (2)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (3)

Introdução ShellSort Proposto por Donald Shell em 1959. É uma extensão do InsertionSort. Problema com o algoritmo de ordenação por inserção: Troca itens adjacentes para determinar o ponto de inserção. São efetuadas n 1 comparações e movimentações quando o menor item está na posição mais à direita do vetor. O método de Shell contorna este problema permitindo trocas de registros distantes um do outro. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (4)

Introdução Idéia básica Os itens separados de h posições são rearranjados, gerando sequências ordenadas. É dito que cada seqüência está h-ordenada. Depois, o valor de h é reduzido progressivamente, até atingir o valor 1, que resultará no vetor completamente ordenado. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (5)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Exemplo BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (6)

Introdução Observações À medida que h decresce, o vetor vai ficando cada vez mais próximo da ordenação. Com h = 1, o algoritmo se comporta exatamente igual ao InsertionSort. Mas, como podemos escolher uma boa sequência de valores para h? BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (7)

Introdução Escolha de h Como escolher o valor de h? Para s = 1: h(s) = 1; Para s > 1: h(s) = 3h(s 1) + 1 A sequência para h corresponde a: 1, 4, 13, 40, 121, 364, 1.093, 3.280,... Knuth (1973, p. 95) mostrou experimentalmente que esta seqüência é difícil de ser batida por mais de 20% em eficiência. Para conhecer outras sequências, clique aqui. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (8)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (9)

Implementação ShellSort 1 void shellsort ( TItem *v, int n) { 2 int i, j, h; 3 TItem aux ; 4 5 for (h = 1; h < n; h = 3 * h + 1); /* h inicial. */ 6 7 do { 8 h = (h - 1) / 3; /* atualiza h. */ 9 for (i = h ; i < n ; i ++) { 10 aux = v[ i]; 11 j = i; 12 while ( v[ j - h]. chave > aux. chave ) { 13 v[ j] = v[ j - h]; 14 j -= h; 15 if ( j < h) break ; 16 } 17 v[ j] = aux ; 18 } 19 } while (h!= 1); 20 } BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (10)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (11)

Análise Análise A complexidade do algoritmo ainda não é conhecida. Ninguém foi capaz de analisar o algoritmo até hoje. Depende de problemas matemáticos muito difíceis. A começar pela própria sequência de incrementos. O que se sabe é que cada incremento não deve ser múltiplo do anterior. Por quê? Observe o exemplo do slide 6. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (12)

Análise Análise Conjecturas referentes ao número de comparações para a sequência de Knuth: Conjectura 1: C(n) = O(n 1.25 ). Conjectura 2: C(n) = O(n (ln n) 2 ). BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (13)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (14)

Características Características Vantagens Shellsort é uma ótima opção para arquivos de tamanho moderado. Sua implementação é simples e requer uma quantidade de código pequena. Desvantagens O tempo de execução do algoritmo é sensível à ordem inicial do arquivo. O método não é estável. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (15)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (16)

Conclusão Conclusão Nesta aula tivemos contato com o algoritmo de ordenação chamado Shellsort. Trata-se de uma adaptação do algoritmo InsertionSort. Sua complexidade não é bem conhecida, mas pode ser eficiente para arquivos pequenos. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (17)

Conclusão Conclusão Quadro comparativo dos métodos de ordenação: Algoritmo Comparações Movimentações Melhor Médio Pior Melhor Médio Pior Espaço Estável In situ Bubble O(n 2 ) O(n 2 ) O(1) Sim Sim Selection O(n 2 ) O(n) O(1) Não Sim Insertion O(n) O(n 2 ) O(n) O(n 2 ) O(1) Sim Sim Merge O(n log n) O(n) Sim Não Quick O(n log n) O(n 2 ) O(n) Não Sim Shell O(n 1.25 ) ou O(n (ln n) 2 ) O(1) Não Sim Existem versões estáveis. BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (18)

Conclusão Conclusão A tarefa de ordenação é muito importante, ela é uma necessidade básica para a solução de muitos problemas. Próxima aula: Filas de Prioridade. Dúvidas? BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (19)

Conteúdo 1 Introdução 2 Implementação 3 Análise 4 Características 5 Conclusão 6 Exercícios BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (20)

Exercícios propostos Exercício 01 Dada a sequência de números: 3 4 9 2 5 1 8. Ordene em ordem crescente utilizando o algoritmo aprendido em sala (ShellSort), apresentando a sequência dos números a cada passo (Teste de Mesa). BCC202 - Estrutura de Dados I Aula 15: Ordenação: ShellSort (21)