Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem.

Slides:



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

Complexidade de Algoritmos Recursivos
Katia S. Guimarães QUICKSORT Katia S. Guimarães
Pesquisa de Informação
Exercício Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo.
Solved Exercises 1. Finding the Peak. Let A= a1,…,an be a sequence of n numbers with the following property: there is p in {1,…,n} for which (i) the.
Aula 10 Algoritmos de Busca
Algoritmos de Ordenação
Algoritmos de Ordenação
Algoritmos de Ordenação
Departamento de Electrónica e Telecomunicações - Universidade de Aveiro Aulas Anteriores ° Tipos definidos pelo utilizador ° Definição de tipos baseados.
Análise Projeto de Algoritmos
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
David Menotti Estruturas de Dados I DECOM – UFOP
Medida do Tempo de Execução de um Programa
David Menotti Estruturas de Dados I DECOM – UFOP
Pesquisa em Memória Primária – Árvores de Busca
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,
Classificação e Pesquisa de Dados
Algoritmos Escher.
Dividir-e-Conquistar
Programação Dinámica Análise de algoritmos UNISUL
Algoritmos de Ordenação
Algoritmos de Ordenação 4
Algoritmos de Busca Parte II
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Ordenação por inserção
Aula 14.
Mergesort Katia Guimarães.
Ceça Moraes – Introdução à Programação SI1
Procedimentos e Funções
Algoritmos de Ordenação
QuickSort Dividir: A[p…r] é particionado (reorganizado) em dois subvetores não vazios A[p…q] e A[q+1…r] tal que cada elemento de A[p…q] é menor ou igual.
© 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice Hall. Todos os direitos reservados.slide 1 © 2011 Pearson Prentice.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
Aula 10 Algoritmos de Busca
Capítulo VI – Variáveis Indexadas 6.1 – A necessidade de variáveis indexadas 6.2 – Vetores e matrizes 6.3 – Aplicações com vetores numéricos 6.4 – Aplicações.
Complexidade em Tempo de um Algoritmo
Como analisar um algoritmo
DCC 001 Programação de Computadores 2º Semestre de 2011
Métodos de Ordenação.
INE Fundamentos de Matemática Discreta para a Computação
Alinhamento de Cadeias de DNA COMPARAÇÃO DE SEQÜÊNCIAS
Geometria Computacional Fecho Convexo
CLASSIFICAÇÃO DE DADOS
Analise de Algoritmos e Notação Assintótica
Análise e Síntese de Algoritmos
1 TAD Fila com Prioridade -FCP ATAI. 2 TAD Fila com Prioridade (Priority Queue) TAD Fila com Prioridade armazena uma colecção de elementos com prioridade.
ATAL – Prof. Jorge Figueiredo Ordenação AT AL Análise e Técnicas de Algoritmos Análise de Algoritmos de Ordenação.
Introdução à Informática e Computação
Gabriel C.S. EDA0001 – TADS – 2013 UDESC – Joinville
Berilhes Borges Garcia Algoritmos Uma ferramenta para resolver um problema de computação bem- especificado (O espírito da computação) Exemplo: ordenação.
Problema da Mochila – sem repetição de objetos
Alinhamento Global de Seqüências Katia Guimarães.
Métodos de Ordenação Externa
ORDENAÇÃO EM TEMPO LINEAR
Ordenação Professor Paulo Gomide 27 de outubro de 2015.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Curso Programadores de Informática
Campus Pau dos Ferros Disciplina de Algoritmos Prof. Demétrios Coutinho INFORMÁTICA BÁSICA Algoritmos de Ordenação.
Técnicas de Análise de Algoritmos Cristiano Arbex Valle Vinicius Fernandes dos Santos
Algoritmos com matrizes e vetores
Algoritmos de ordenação Estruturas avançadas de dados I
Transcrição da apresentação:

Ordenação (Sorting) Ordenar é dispor os elementos de um conjunto numa ordem ascendente ou descendente. Problema: Dados n números, arranjá-los em ordem crescente ou decrescente.

Insertion Sort: Problema Dados n números em uma ordem arbitrária. Por indução, sabemos como ordenar n-1 números Temos que colocar o n-ésimo número no lugar correto. Como podemos resolver este problema? - A base da indução é o primeiro elemento, a 1. - Passamos ao próximo elemento, a 2, e procuramos sua posição correta, comparando-o com o elemento a 1. Se a 1 for maior que a 2, trocamos a posição dos dois elementos. - Em seguida passaremos ao próximo elemento, a 3, etc.

Insertion Sort

Algoritmo Insertion Sort Entrada : um array e o seu número de elementos (item, number) Saída : o array ordenado begin int i, j, t for i := 2 to number do t := item[i]; j := i-1; while j  1 and t < item[j] do item[j+1] := item[j]; j := j-1; item[j+1] := t; end

Exemplo de Insertion Sort

Complexidade do Insertion Sort Para um elemento genérico i no conjunto dado, no pior caso, devemos compará-lo com todos os i -1 elementos que o antecedem. Uma vez que o conjunto possui n elementos, o número total de comparações é dado pela soma: n-1 = Resultando na complexidade: O(n 2 ) n (n-1) 2

Mergesort Problema Ordenar um dado conjunto de n números. Uma nova abordagem: Dividir-para-Conquistar 1. Dividir o problema em sub-problemas (menores) 2. Resolver estas novas instâncias (recursivamente) 3. Intercalar os resultados desses sub-problemas para achar a solução do problema principal.

MergeSort Lista 2 2 Lista1 3 1

Algoritmo do Mergesort Entrada : (A, B, ini, fim) Saída : B [ ini.. fim], o array A ordenado de ini até fim begin if (fim = ini) retorne(*); else MergeSort (A, B, ini, (ini + fim)/2 ); MergeSort (A, B, (ini + fim)/2 +1, fim); Intercala (A, B, ini, (fim-ini)/2 +1, (fim-ini+1)/2 ); retorne(*); end (*) O array com a resposta depende do tamanho de A.

Algoritmo Intercala Entrada: (A, B, ini, m, n) Saída: Elementos B[ini.. ini+m+n-1] ordenados begin int i:=1, j:=1, k:=1; while ( i  m and j  n ) do if(A[i]  B[j] ) then { C[k] := A[i] i := i+1; k := k+1 } else { C[k] := B[j] j := j+1; k := k+1 } while ( i  m) do { C[k] := A[i]; k := k+1; i := i+1 } while ( j  n) do { C[k] := B[j]; k := k+1; j := j+1 } retorne( C ); end

Exemplo de MergeSort

Complexidade do Mergesort T Mergesort (tamanho) = 2*T Mergesort (Tamanho/2) + cte*tamanho + cte Forma Fechada de Recorrência T MS = 2*T MS (n/2) + c*n + c = 2*[ 2*T MS (n/4) + c*n/2 + c ] + c*n + c = 4*T MS (n/4) + 2c*n + 3c = 4*[ 2*T MS (n/8) + c*n/4 + c ] + 2c*n + 3c = 8*T MS (n/8) + 3c*n + 7c =... = 2 i *T MS (n/2 i ) + i*c*n + (2 i -1)*c T MS (1) ==> (n/2 i ) = 1

Complexidade do Mergesort Quando i = log 2 n T MS (n) = 2 log 2 n * cte + (log 2 n)*c*n + (2 log 2 n - 1) *c T MS = n*cte + c*n*log 2 n + c*(n-1) T MS = c*nlog 2 n + (cte+c)*n - c T MS (n) = O(n * log 2 n)