Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville

Slides:



Advertisements
Apresentações semelhantes
Aula T-09 – BCC202 Listas (Parte 1) Túlio Toffolo www. decom. ufop
Advertisements

Estruturas de Dados Marcio Gonçalves.
Linguagem de Programação IX Métodos de Ordenação
Algoritmos de Ordenação
1 Complexidade de Algoritmos Complexidade de pior caso Complexidade de melhor caso de uso bem menos freqüente em algumas situações específicas Complexidade.
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
David Menotti Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
David Menotti Algoritmos e Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária
David Menotti Estruturas de Dados I DECOM – UFOP
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,
Complexidade de Algoritmos
Classificação (Ordenação) de dados
LPG - I: Ponteiros e Vetores/Matrizes UDESC - SBS
Lógica de Programação Módulo II
Linguagem C Strings.
Linguagem C Strings.
Ponteiros.
Listas e algoritmos (em Scratch)
Algoritmos de Ordenação
Algoritmos de Ordenação
Insertion Sort.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Algoritmos de ordenação
ICC2 Aula 7 Fábio Nakano.
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática 6 Vetores e Matrizes
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Algoritmos e Estruturas de Dados II
Algoritmos e Estruturas de Dados II
Linguagem de Programação II Parte VII
Linguagem de Programação II Parte IX
ORDENAÇÃO POR CONTAGEM
Aula prática 6 Vetores e Matrizes
Estruturas de Dados Aula 9: Listas (parte 1)
Fundamentos de Programação
Ceça Moraes – Introdução à Programação SI1
Procedimentos e Funções
Algoritmos de Ordenação
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Tabela Hash Alunos : Gustavo Jorge Zanin nºUSP
Lista Linear Base para outras estruturas
Como analisar um algoritmo
Estrutura de Dados Aula 02 1.
CLASSIFICAÇÃO DE DADOS
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Exercícios Análise de algoritmos & Ordenação
Analise de Algoritmos e Notação Assintótica
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Aula Prática 12 Listas Encadeadas Monitoria
Classificação Ordenação de Dados
Aula Prática 6 Vetores e Matrizes Monitoria
ORDENAÇÃO EM TEMPO LINEAR
Métodos de Pesquisa: Sequencial e Binária
INE5408 Estruturas de Dados Listas Encadeadas Simples.
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Curso Programadores de Informática
Comportamento Assintótico
V ETORES E M ATRIZES Disciplina: Informática Aplicada Professor: Modesto Chaves.
Algoritmos com matrizes e vetores
Transcrição da apresentação:

Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville Bucket Sort Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville

Consiste em dividir os elementos do vetor a ser ordenado em baldes, ordenando primeiramente o conteúdo dos baldes, e depois agrupando os elementos. Melhor caso, Complexidade Linear, O(n). Pior caso, Quadrático, O(n²). Definição

Pseudocódigo BUCKET SORT(A, n) para i ← 1 até n faça insira A[i] na lista ligada B[⌊n A[i]⌋] para i ← 0 até n − 1 faça ordene a lista B[i] com algum algoritmo de ordenação 5 Concatene as listas B[0], B[1], . . . ,B[n − 1] Pseudocódigo

http://www.cs.usfca.edu/~galles/visualiza tion/BucketSort.html Exemplo

Vantagens e Desvantagens Não realiza comparações É estável, preserva a ordem de chaves iguais Tempo Linear Desvantagens: Precisa de mais memória para ordenar o conjunto O algoritmo se torna muito caro quando o vetor chave é muito extenso Vantagens e Desvantagens

Explique com suas palavras o algoritmo Bucket Sort, e demonstre com um exemplo Insira 10 números em um vetor e faça a ordenação dele utilizando o Bucket Sort e o Bubble Sort como ordenação dos buckets. Exercícios Sugeridos

Lucas Casas EDA0001 – TADS – 2013 UDESC – Joinville Counting Sort Lucas Casas EDA0001 – TADS – 2013 UDESC – Joinville

Vantagens e Desvantagens Ordena vetores em tempo linear Não realiza comparações É um algoritmo de ordenação estável Desvantagens: Usa 2 outros vetores na ordenação, utilizando mais espaço na memória Vantagens e Desvantagens

Esta forma de ordenação pressupõe que cada elemento dentro do vetor “a” é um inteiro entre 1 e k (k = maior inteiro do vetor). A ideia é saber para cada elemento x do vetor, quantos elementos são iguais ou inferiores a x. Funcionamento

Funcionamento Recebe o vetor “a” (que possui os valores desordenados) Cria vetor cnt[MaiorValor(a)+1] e b[tamanho(a)] Inicializa todas as posições de cnt = 0. Percorre o vetor “a”, para cada posição i de a faz cnt[a[i]-1]++. Acumula em cada elemento de cnt o elemento somado ao elemento anterior. Guarda em b os valores de a ordenados de acordo com b[cnt[a[i]++]=a[i] Copia “b” para “a”. Funcionamento

countingsort(A[], B[], k) for i = 1 to k do C[i] = 0 for j = 1 to length(A) do C[A[j]] = C[A[j]] + 1 for 2 = 1 to k do C[i] = C[i] + C[i-1] B[C[A[j]]] = A[j] C[A[j]] = C[A[j]] - 1 Pseudocódigo

Simulação Recebe um vetor de entrada, com os valores desordenados Então gera um vetor B com o mesmo tamanho de A E um vetor C com o tamanho igual ao maior elemento + 1 2 5 3 A = 1 2 3 4 5 6 7 8 B = 1 2 3 4 5 6 7 8 C = 0 1 2 3 4 5 Simulação

Simulação Incrementamos C[i] de acordo com os valores em A[i] Depois fazemos C[i] = C[i] + C[i-1] 2 3 1 C = 0 1 2 3 4 5 2 4 7 8 C = 0 1 2 3 4 5 Simulação

Depois fazemos B[C[A[i]]] = A[i], o que vai colocar o valor de A[i] de forma ordenada no vetor B Em seguida é feito o decremento de C[A[i]] 2 4 7 8 C = 0 1 2 3 4 5 C[3] = C[3] – 1: 2 4 6 7 8 C = 0 1 2 3 4 5 Simulação

Após este ultimo passo o vetor B está ordenado, podemos passar os valores para o vetor A http://www.cs.usfca.edu/~galles/visualization/CountingSort.html 2 3 5 B = 1 2 3 4 5 6 7 8 Simulação

Ordene o seguinte conjunto numérico utilizando o Counting Sort: {2, 3, 5, 3, 3, 3, 5, 6, 6, 6, 5, 5, 2, 2, 2, 7} Para o vetor [3, 1, 2, 5, 4, 2, 2, 5], qual o valor de k (tamanho do vetor C)? Exercícios Sugeridos

Vagner Pagotti EDA0001 – TADS – 2013 UDESC – Joinville Radix Sort Vagner Pagotti EDA0001 – TADS – 2013 UDESC – Joinville

= radix quadratum 9 aequalis 3 base do quadrado 9 é igual a 3 Significado

Origem Século XIX Herman Hollerith (1860-1929) Máquina de Tabulação de Cartões Necessidade de ordenar as fichas Harold H. Seward (1930–2012) MIT – 1945 – Projeto Apollo Origem

Radix Sort = O(n) Classificação Complexidade Notação Significado Constante O(1) Não varia com o número de entradas Linear O(n) Varia linearmente Logarítmica O(log n) Varia de forma logaritimica Linearítimica O(n log n) Varia n vezes a variação logaritimica Quadrática O(n²) Varia de forma quadrada Radix Sort = O(n) Classificação

Definição Ordenação pela posição (LSB/MSB) Algoritmo não comparativo Algoritmo de complexidade linear Complexidade de tempo = O(n.k) Complexidade de espaço = O(n+s) n = número de elementos k = tamanho string s = tamanho do alfabeto Definição

Vantagens e Desvantagens Baixa complexidade Execução rápida (linear) Estabilidade Desvantagens Necessita mais memória Depende do tipo de dado Depende do valor máximo Vantagens e Desvantagens

Algoritmo LSB - Numérico Entrada: V = vetor de inteiros Criar matriz de dígitos: D = matriz[10][*] Calcular Passos: P = número de dígitos do maior de V Para cada passo: Para cada item de V: Calcular dígito do número (entre 0 a 9) Adicionar o número na matriz D[digito] Para cada item na matriz D: Colocar cada item no vetor V Saida: vetor V ordenado Algoritmo LSB - Numérico

Exemplo LSB Entrada 25 18 123 345 7 603 789 43 11 120 Saída 7 11 18 25 Passo 1 120 1 011 2 3 123 603 043 4 5 025 345 6 7 007 8 018 9 789 Passo 2 603 007 1 011 018 2 120 123 025 3 4 043 345 5 6 7 8 789 9 Passo 3 007 011 018 025 043 1 120 123 2 3 345 4 5 6 603 7 789 8 9 025 018 123 345 007 603 789 043 011 120 120 011 123 603 043 025 345 007 018 789 603 007 011 018 120 123 025 043 345 789 Saída 7 11 18 25 43 120 123 345 603 789 Exemplo

Algoritmo MSB – Lexicográfico Entrada: V = vetor de strings, P = posição a ser ordenada (inicialmente zero) Criar matriz de string com uma posição para cada caractere (ASCII): D = matriz[128][*] Para cada item de V: Adicionar a string na matriz de acordo com o caractere da posição informada: D[caractere] Para cada item na matriz D: Se o vetor do caractere possuí mais de um item, chamar a função recursivamente passando a lista de itens do caractere e a posição informada + 1 Colocar cada item no vetor V Saida: vetor V ordenado Algoritmo MSB – Lexicográfico

Exemplo MSB Entrada JATO DADO DEDO PATO LATA MAR FOCA FACA MACA JAPA Passo 1 D F J L M P ADO OCA ATO ATA AR EDO ACA APA Passo 2 D A E DO F A O CA J A TO PA M A R CA Passo 3 JA P T A O MA C R A Saída DADO DEDO FACA FOCA JAPA JATO LATA MACA MAR PATO Exemplo

Construir uma função que recebe um vetor de 10 inteiros e ordene os números utilizando o algoritmo de ordenação “Radix LSB”. Construir uma função que recebe uma lista encadeada simples que contém itens (tipo de informação) de valores inteiros e ordene a lista com o algoritmo de ordernação “Radix LSB”. Exercícios Sugeridos