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

Documentos relacionados
Ordenação. Prof. Jonas Potros

BCC202 - Estrutura de Dados I

Memória secundária. Memória secundária

Extra- Algoritmos de Ordenação

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

Técnicas de análise de algoritmos

ALGORITMOS DE ORDENAÇÃO

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

Métodos de Ordenação Parte I

Métodos de Ordenação

Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos

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

void subdivide (LISTA_ENC *pl, LISTA_ENC *pl1, LISTA_ENC *pl2) { int cont, k=1; for (cont=tam(*pl)/2;cont;cont--) {

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

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

Carlos Eduardo Batista. Centro de Informática - UFPB

Estruturas de Dados Algoritmos de Ordenação

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

Medida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

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

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;

Projeto e Análise de Algoritmos

Ordenação em Tempo Linear

Métodos de Classificação

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

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

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

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

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

Algoritmos de Ordenação: Tempo Linear

Estruturas de Dados 2

5. Algoritmos de Ordenação

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

Carlos Eduardo Batista. Centro de Informática - UFPB

Projeto e Análise de Algoritmos

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

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

Análise de Algoritmos

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

Listas Lineares. Livro Projeto de Algoritmos Nívio Ziviani Capítulo 3 Seção 3.1

LISTAS LINEARES. Estrutura de Dados

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

Algoritmos e Estruturas de Dados II. Ordenação

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

Trabalho Prático 1. Valor: 1,0 pontos (10% da nota total) Data de Entrega: 02/05/2010

BCC202 - Estrutura de Dados I

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

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

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

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias:

Aula 15: Pesquisa em Memória Primária. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

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

Estruturas de Dados Aula 11: TAD Pilha

Ordenação de Dados (IV) MergeSort

Solução de Recorrências

Programação de Computadores Ordenação de Arranjos

Algoritmos de Ordenação

Aplicações de listas e outras estruturas

BCC202 - Estrutura de Dados I

Ordenação em tempo linear

BUSCA EM ARRAYS. Prof. André Backes. Ato de procurar por um elemento em um conjunto de dados

METODOS DE ORDENAÇÃO: A IMPORTÂNCIA DA ESCOLHA DO MÉTODO CORRETO

Projeto e Análise de Algoritmos

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

Método BubbleSort. Estrutura de Dados II Prof Jairo Francisco de Souza

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

Aplicações de listas Outras estruturas

Algoritmos e Estruturas de Dados II. Trabalho Prático 3

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

Aula 12 Métodos de Classificação: - Classificação por Inserção Direta - Classificação por Seleção Direta

SCC-201 Introdução à Ciência de Computação II

LISTAS ENCADEADAS OU NÃO- SEQÜENCIAIS. Estrutura de Dados

Análise de Algoritmos Algoritmos de Ordenação

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

Algoritmos de Ordenação

BCC202 - Estrutura de Dados I

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

Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional

Ordenação em Tempo Linear

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

Edital de Seleção 032/2016 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

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

Classes, Herança e Interfaces

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof.

SCC-501 Introdução à Ciência de Computação II

Estruturas de Dados. Filas em que a prioridade de remoção não é cronológica. Maior prioridade não é do elemento que ingressou primeiro

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

Bucketsort. CLRS sec 8.4. Algoritmos p. 1

Algoritmos de Ordenação

Ordenação e Busca em Arquivos

Classificação por Seleção - selection sort

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

Pesquisa Linear. Adriano J. Holanda 15/3/2016

Breve Introdução à Complexidade Assintótica de Algoritmos Letícia Rodrigues Bueno

Algoritmo MergeSort. Estrutura de Dados II Prof Jairo Francisco de Souza

Transcrição:

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Algoritmos de ordenação: Bucketsort, Radixsort e Seleção Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ nataliabatista@decom.cefetmg.br 2º semestre/ 2017

1. Introdução (1/5) Ordenar: processo de rearranjar um conjunto de objetos em ordem ascendente ou descendente. A ordenação visa facilitar a recuperação posterior de itens do conjunto ordenado. Aplicações: catálogo telefônico dicionários índices de livros tabelas e arquivos, etc. Fonte:http://cae.ucb.br/conteudo/programar/labor1/new _ordenacaoepesquisa.html 2

1. Introdução (1/5) A maioria dos métodos de ordenação é baseada em comparações das chaves. Existem métodos de ordenação que utilizam o princípio da distribuição. Exemplo: ordenar as cartas de um baralho. 3

2. Ordenação por distribuição Exemplo: considere o problema de ordenar um baralho com 52 cartas na ordem 4

2. Ordenação por distribuição Algoritmo: Fonte: https://hypescience.com/existem-mais-combinacoes-em-umbaralho-de-cartas-do-que-estrelas-no-universo/ 1. Distribuir as cartas em treze montes: ases, dois, três,..., reis. 2. Colete os montes na ordem citada (às no fundo). 3. Distribua novamente as cartas em quatro montes: paus, ouros, copas e espadas. 4. Colete os montes na ordem especificada. 5

2. Ordenação por distribuição Métodos como o ilustrado são também conhecidos como ordenação digital, Bucketsort ou Radixsort. O método não utiliza comparação entre chaves. Uma das dificuldades de implementar este método está relacionada com o problema de lidar com cada monte. Se para cada monte nós reservarmos uma área, então a demanda por memória extra pode tornar-se proibitiva. O custo para ordenar um arquivo com n elementos é da ordem de O(n). 6

3. Bucketsort Considere uma sequência de n itens cujas chaves são inteiros no intervalo [0, N-1]. As chaves são usadas como índices em um arranjo de buckets B que tem entradas de 0 a N-1. Um item com chave k é armazenado no bucket B[k]. Após inserir cada item em seu bucket, pode-se colocar os itens de volta na sequência de forma ordenada pela enumeração do conteúdo dos buckets B[0], B[1],..., B[N-1]. Fonte: https://en.wikipedia.org/wiki/bucket_sort 7

4. Radixsort Ordena uma sequência de pares aplicando um Bucketsort estável sobre a sequência duas vezes: primeiro usando um componente do par como chave de ordenação; em seguida empregando o segundo componente. 8

5. Estabilidade Um método de ordenação é estável se a ordem relativa dos itens com chaves iguais não se altera durante a ordenação. Alguns dos métodos de ordenação mais eficientes não são estáveis. Exemplo: Se uma lista alfabética de nomes de funcionários de uma empresa é ordenada pelo campo salário, então um método estável produz uma lista em que os funcionários com mesmo salário aparecem em ordem alfabética. 9

5. Estabilidade A estabilidade pode ser forçada quando o método é não-estável. Sedgewick (1988) sugere agregar um pequeno índice a cada chave antes de ordenar, ou então aumentar a chave de alguma outra forma. 10

6. Classificação dos métodos de ordenação Ordenação interna: arquivo a ser ordenado cabe todo na memória principal. Ordenação externa: arquivo a ser ordenado não cabe na memória principal. Diferenças entre os métodos: Em um método de ordenação interna, qualquer registro pode ser imediatamente acessado. Em um método de ordenação externa, os registros são acessados sequencialmente ou em grandes blocos. 11

7. Algoritmos de ordenação interna Na escolha de um algoritmo de ordenação interna deve ser considerado o tempo gasto pela ordenação. Sendo n o número registros no arquivo, as medidas de complexidade relevantes são: Número de comparações C(n) entre chaves. Número de movimentações M (n) de itens do arquivo. 12

7. Algoritmos de ordenação interna O uso econômico da memória disponível é um requisito primordial na ordenação interna. Métodos de ordenação in situ são os preferidos: executam a permutação dos itens no próprio vetor. Métodos que utilizam listas encadeadas são menos utilizados: memória extra para ponteiros. Métodos que fazem cópias dos itens a serem ordenados possuem menor importância. 13

7. Algoritmos de ordenação interna Exemplos: Ordenação por seleção. Ordenação por inserção. Bubblesort. Shellsort. Mergesort. Quicksort. Heapsort. 14

7. Algoritmos de ordenação interna Classificação dos métodos de ordenação interna: Métodos simples: Adequados para pequenos arquivos. Requerem O(n 2 ) comparações. Fáceis de entender e implementar. Métodos eficientes: Adequados para arquivos maiores. Requerem O(n log n) comparações. As comparações são mais complexas nos detalhes. 15

7. Algoritmos de ordenação interna Notação utilizada: Os algoritmos trabalham sobre os registros de um arquivo. Cada registro possui uma chave utilizada para controlar a ordenação. Podem existir outros componentes em um registro. 16

7. Algoritmos de ordenação interna Estrutura de um registro: typedef long TipoChave; typedef struct TipoItem { TipoChave Chave; / outros componentes / } TipoItem ; Qualquer tipo de chave sobre o qual exista uma regra de ordenação bem definida pode ser utilizado. 17

7. Algoritmos de ordenação interna Tipos de dados e variáveis utilizados nos algoritmos de ordenação interna: typedef int TipoIndice ; typedef TipoItem TipoVetor [ MAXTAM + 1]; / MAXTAM + 1 por causa da sentinela em Insercao / TipoVetor A; O índice do vetor vai de 0 até MaxTam, devido às chaves sentinelas. O vetor a ser ordenado contém chaves nas posições de 1 até n. Fonte:https://www.designtoscano.com 18

8. Ordenação por seleção Um dos algoritmos mais simples de ordenação. Considere uma sequência A com n elementos: Seleciona o menor elemento do conjunto. Troca este elemento com A[1]. Repete as duas operações acima com os n 1 elementos restantes, depois com os n - 2, até que reste apenas um. 19

8. Ordenação por seleção O método é ilustrado abaixo: As chaves em negrito sofreram uma troca entre si. 20

8. Ordenação por seleção 21

8. Ordenação por seleção Anel interno Contém um comando de decisão, com um comando apenas de atribuição. Ambos levam tempo constante para serem executados. O tempo para incrementar o índice do anel e avaliar sua condição de terminação é O(1). 22

8. Ordenação por seleção O tempo combinado para executar uma vez o anel é O(max(1, 1, 1)) = O(1), conforme regra da soma para a notação O. Como o número de iterações é n-i, o tempo gasto no anel é O((n-i)x1) = O(n - i), conforme regra do produto para a notação O. 23

8. Ordenação por seleção Anel externo: Contém, além do anel interno, quatro comandos de atribuição: O(max(1, (n - i), 1, 1, 1)) = O(n - i). O anel é executado n-1 vezes e o tempo total para executar o programa está limitado ao produto de uma constante pelo somatório de (n - i): 24 (Ziviani)

8. Ordenação por seleção Se considerarmos o número de comparações como a medida de custo relevante, o programa faz n 2 /2 + n/2 comparações para ordenar n elementos. Considerarmos o número de movimentos de registros, o programa realiza exatamente 3(n 1) movimentações. 25

8. Ordenação por seleção Fonte: Ziviani. 26

8. Ordenação por seleção Vantagens: Custo linear para o número de movimentos de registros. É o algoritmo a ser utilizado para arquivos com registros muito grandes. É muito interessante para arquivos com um número pequeno de registros. Desvantagens: O fato de o arquivo já estar ordenado não ajuda em nada, pois o custo continua quadrático. O algoritmo não é estável. 27

8. Ordenação por seleção Exemplo: 1 2 3 4 5 Chaves iniciais 2 2 1 4 3 i = 1 1 2 2 4 3 i = 2 1 2 2 4 3 i = 3 1 2 2 4 3 i = 4 1 2 2 3 4 28

Referências Ziviani, N. Projeto de algoritmos: com implementações em Java e C++. 3 ed. Editora Cengage Learning, 2007. Goodrich, M. T. e Tamassia, R. Estruturas de Dados & Algoritmos. Editora Bookman, 2013. Loureiro, A. A. F. Projeto e Análise de Algoritmos: Análise de Complexidade. Notas de aula, 2010. Menotti, D. Ordenação. Notas de aula, 2009. 29