A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville"— Transcrição da apresentação:

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

2 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

3 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

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

5 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

6 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

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

8 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

9 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

10 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

11 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

12 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 = B = C = Simulação

13 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 = 2 4 7 8 C = Simulação

14 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 = C[3] = C[3] – 1: 2 4 6 7 8 C = Simulação

15 Após este ultimo passo o vetor B está ordenado, podemos passar os valores para o vetor A
2 3 5 B = Simulação

16 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

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

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

19 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

20 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

21 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

22 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

23 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

24 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

25 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

26 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

27 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


Carregar ppt "Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville"

Apresentações semelhantes


Anúncios Google