Algoritmos de Ordenação: QuickSort
|
|
|
- Benedito Wagner Sá
- 7 Há anos
- Visualizações:
Transcrição
1 Algoritmos de Ordenação: QuickSort ACH Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material baseado em slides do professor Marcos Chaim Delano M. Beder (EACH - USP) QuickSort ACH / 21
2 Projeto por Indução Forte Hipótese de indução forte Sabemos ordenar um conjunto de 1 k < n inteiros. Caso base: n = 1. Um conjunto de um unico elemento está ordenado. Passo da Indução (Segunda Alternativa): Seja S um conjunto de n 2 inteiros e x um elemento qualquer de S. Sejam S 1 e S 2 os subconjuntos de S x dos elementos menores ou iguais a x e maiores que x, respectivamente. Ambos S 1 e S 2 possuem menos do que n elementos. Por hipótese de indução, sabemos ordenar os conjuntos S 1 e S 2. Podemos então obter S ordenado concatenando S 1 ordenado, x e S 2 ordenado (S 1 + x + S 2 ). Delano M. Beder (EACH - USP) QuickSort ACH / 21
3 QuickSort Esta indução dá origem ao algoritmo de divisão e conquista QuickSort. Passos para ordenar um subvetor típico V [p..r] são: Dividir: o vetor V [p..r] é particionado (reorganizado) em dois subvetores (possivelmente vazios) V [p..q 1] e V [q + 1..r] tais que: V [p..q 1] V [q] V [q + 1..r]. O índice q é calculado como parte desse particionamento. Conquistar: os dois subvetores V [p..q 1] e V [q + 1..r] são ordenados por chamadas recursivas ao QuickSort. Combinar: Como os subvetores são ordenados localmente, não é necessário nenhum trabalho para combiná-los: O vetor V [p..r] no final já está ordenado. Delano M. Beder (EACH - USP) QuickSort ACH / 21
4 QuickSort QuickSort void QuickSort(int[] A, int ini, int fim) { if (ini < fim) { int q = particao(a, ini, fim); QuickSort(A, ini, q - 1); QuickSort(A, q + 1, fim); } } No MergeSort a operação de dividir era bem barata. O caro era combinar. No QuickSort, o caro é dividir, enquanto combinar não custa nada. Delano M. Beder (EACH - USP) QuickSort ACH / 21
5 Divisão no QuickSort int particao (int[] A, int ini, int fim) { int i, j, temp; int x = A[fim]; // pivô i = ini; j = fim - 1; while (i <= j) { if(a[i] <= x) { i++; } else if (A[j] > x) { j--; } else { // trocar A[i] e A[j] temp = A[i]; A[i] = A[j]; A[j] = temp; } } A[fim] = A[i]; // reposicionar o pivô A[i] = x; return i; } Delano M. Beder (EACH - USP) QuickSort ACH / 21
6 QuickSort 1. QuickSort (A, 0, 7) 1.1. Partição(A, 0, 7) 1.2. QuickSort (A, 0, 2) Partição(A, 0, 2) QuickSort (A, 0, -1) i = 0, j = i = 1, j = i = 1, j = i = 1, j = i = 2, j = i = 3, j = pivô = i = 0, j = 1 2/ i = 0, j = i = 0, j = pivô = 0 Delano M. Beder (EACH - USP) QuickSort ACH / 21
7 QuickSort QuickSort (A, 1, 2) Partição(A, 1, 2) QuickSort (A, 1, 0) QuickSort (A, 2, 2) 1.3. QuickSort (A, 4, 7) Partição(A, 4, 7) 1 3/ i = 1, j = i = 1, j = pivô = i = 4, j = /5 8 7 i = 5, j = i = 6, j = pivô = 6 Delano M. Beder (EACH - USP) QuickSort ACH / 21
8 QuickSort QuickSort (A, 4, 5) Partição(A, 4, 5) QuickSort (A, 4, 3) QuickSort (A, 5, 5) QuickSort (A, 7, 7) / i = 4, j = i = 4, j = pivô = ordenado Delano M. Beder (EACH - USP) QuickSort ACH / 21
9 O Desempenho do QuickSort O desempenho do QuickSort depende se o particionamento é balanceado ou não balanceado. Para um dado vetor de tamanho n: 1 Particionamento balanceado mais uniforme possível Dois subproblemas de tamanho n/2 e n/2-1. Note que uma posição foi reservada para o pivô, por isso, a soma do tamanho dos dois problema é n 1. 2 Particionamento desbalanceado, dois subproblemas, um de tamanho n 1 e outro de tamanho 0. Quando isto ocorre? Quando o vetor está ordenado. Particionamento balanceado, divisão em subproblemas entre as partições 1 e 2. Exemplo: n 2 e 1. Delano M. Beder (EACH - USP) QuickSort ACH / 21
10 O Desempenho do QuickSort Se o particionamento é balanceado, o algoritmo é executado assintoticamente tão rápido quanto o MergeSort. Isto é, O(n log n). Vantagem adicional em relação ao MergeSort: é in place, isto é, não utiliza um vetor auxiliar. Note-se que basta ser balanceado, não precisa ser o particionamento mais uniforme! Contudo, se o particionamento não é balanceado, ele pode ser executado tão lentamente quanto os algoritmos InsertionSort, SelectionSort e BubbleSort. Isto é, O(n 2 ). Delano M. Beder (EACH - USP) QuickSort ACH / 21
11 O Desempenho do QuickSort Pior Caso Pior caso do QuickSort ocorre quando a rotina de particionamento produz um subproblema com n 1 elementos e um com zero elementos. O custo da partição é Θ(n). Por quê? Para fazer o particionamento, serão necessárias sempre n comparações, ou seja, Θ(n). Supondo que esse particionamento não balanceado surge em cada chamada recursiva, vamos ter a seguinte a seguinte equação de recorrência. T (n) = T (n 1) + T (0) + n Para T (0) = Θ(1), pois a chamada sobre um vetor de tamanho 0 simplesmente retorna. T (n) = T (n 1) + n Delano M. Beder (EACH - USP) QuickSort ACH / 21
12 Particionamento pior caso Expandindo a equação de recorrência, pode-se concluir que T (n) é Θ(n 2 ) T (n) = T (n 1) + n = T (n 2) + n 1 + n T (n) = T (n 3) + n 2 + n 1 + n... T (n) = T (n k) + nk k 1 i=0 i T (n) = T (n k) + nk k( k 1 2 ) onde n k = 0 n = k Logo, obtemos: T (n) = Θ(1) + n 2 n2 n 2 T (n) = Θ(1) + 2n2 n 2 +n 2 T (n) = Θ(1) + n2 2 + n 2 T (n) = Θ(n 2 ) Delano M. Beder (EACH - USP) QuickSort ACH / 21
13 Particionamento melhor caso Na divisão mais uniforme possível, o particionamento produz dois subproblemas não maiores que n/2: Um tem tamanho n/2 e outro tem tamanho n/2 1. Neste caso QuickSort é executado com muito maior rapidez. A recorrência para o tempo de execução é: T (n) 2T (n/2) + Θ(n) Essa recorrência é semelhante à do MergeSort e sabemos que T (n) = O(n log n) Delano M. Beder (EACH - USP) QuickSort ACH / 21
14 Particionamento balanceado O tempo de execução do caso médio do QuickSort é muito mais próximo do melhor caso do que do pior caso. Para entender isto, considere um particionamento que sempre produza uma divisão proporcional de 9 para 1. Isto parece bastante desequilibrado e possui a seguinte recorrência: T (n) T (9n/10) + T (n/10) + cn Esta recorrência na verdade possui a solução T (n) = O(n log n). (Ver página 122 do Cormen [1]). Delano M. Beder (EACH - USP) QuickSort ACH / 21
15 Intuição para o caso médio Caso médio todas as permutações dos números de entrada são igualmente prováveis. Para um vetor de entrada aleatória é pouco provável que o particionamento ocorra sempre do mesmo modo em todo nível (como suposto na análise informal anterior). Esperado algumas divisões boas e outras ruins, distribuídas aleatoriamente ao longo da árvore. Delano M. Beder (EACH - USP) QuickSort ACH / 21
16 Intuição para o caso médio Suposição: uma divisão ruim (pior caso) seguida de uma boa (melhor caso). Primeira divisão (ruim): T (0) + T (n 1) Segunda divisão (boa): T ( n 1 2 ) + T ( n 1 2 ) Total: T (0) + T ( n 1 2 ) + T ( n 1 2 ) O custo da divisão ruim é absorvido pela divisão boa. Portanto, o tempo de execução do QuickSort quando os níveis se alternam entre divisões boas e ruins é semelhante ao custo para divisões boas sozinhas: T (n) = O(n log n), mas com uma constante maior. Delano M. Beder (EACH - USP) QuickSort ACH / 21
17 Aproximando-se do caso médio Nem sempre as possíveis entradas são equiprováveis. Cheques são registrados na ordem temporal (data) em que são descontados. O banco pode querer uma listagem dos cheques ordenados pelo número do cheque (e.g., 86781, 86782,...). Normalmente, os cheques são emitidos e descontados na ordem do talão, mas nem sempre. Às vezes, o comerciante pode dar um prazo a mais (cheque pré-datado) e demorar para descontar o cheque. Em resumo: a seqüência temporal dos cheques está quase ordenada por número de cheque. Nesta situação, o QuickSort vai ter um desempenho ruim. É então necessário aproximar-se o caso médio. Como? Delano M. Beder (EACH - USP) QuickSort ACH / 21
18 Aproximando-se do caso médio Uma maneira de aproximar-se do caso é escolhendo um pivô aleatoriamente, ao invés de utilizar sempre o último elemento. int particaoaleatoria (int[] A, int ini, int fim) { int i, temp; double f; // Escolhe um número aleatório entre ini e fim f = java.lang.math.random(); // retorna um real f tal que 0 <= f < 1 i = (int) (ini + (fim - ini) * f); // i é tal que ini <= i < fim // Troca de posicao A[i] e A[fim] temp = A[fim]; A[fim] = A[i]; A[i] = temp; return particao(a, ini, fim); } Delano M. Beder (EACH - USP) QuickSort ACH / 21
19 Aproximando-se do caso médio Como é que fica o QuickSort com a partição aleatória? QuickSort Aleatório void quicksortaleatorio(int[] A, int ini, int fim) { if (ini < fim) { int q = particaoaleatoria(a, ini, fim); quicksortaleatorio(a, ini, q - 1); quicksortaleatorio(a, q + 1, fim); } } Delano M. Beder (EACH - USP) QuickSort ACH / 21
20 Resumo QuickSort: Ordenação local (in-place): utiliza quantidade de memória constante além do próprio vetor. Pior caso: Θ(n 2 ). Melhor caso: O(n log n). Caso médio: O(n log n). Delano M. Beder (EACH - USP) QuickSort ACH / 21
21 Referências Referências utilizadas: [1] (páginas ) [1] Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest & Clifford Stein. Algoritmos - Tradução da 2a. Edição Americana. Editora Campus, Delano M. Beder (EACH - USP) QuickSort ACH / 21
Algoritmos de ordenação Quicksort
Algoritmos de ordenação Quicksort Sumário Introdução Descrição do quicksort Desempenho do quicksort Pior caso Melhor caso Particionamento balanceado Versão aleatória do quicksort Análise do quicksort Pior
Algoritmos de Ordenação: MergeSort
Algoritmos de Ordenação: MergeSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Algoritmos de Ordenação
Algoritmos de Ordenação ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material baseado em
Algoritmos de Ordenação: Cota Inferior
Algoritmos de Ordenação: Cota Inferior ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
Estruturas de Dados 2
Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Dividir e Conquistar IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/83 Projeto de Algoritmos por Divisão
Quicksort Letícia Rodrigues Bueno
Quicksort Letícia Rodrigues Bueno UFABC Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição: Quicksort Legenda: pivô; 1 a partição: ; 2 a partição:
Algoritmos de Ordenação: HeapSort
Algoritmos de Ordenação: HeapSort ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
Algoritmos de Ordenação: Tempo Linear
Algoritmos de Ordenação: Tempo Linear ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 10/2008 Material
BCC202 - Estrutura de Dados I
BCC202 - Estrutura de Dados I Aula 13: Ordenação: MergeSort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes Email: [email protected]
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort)
Métodos de Ordenação: Selection, Insertion, Bubble, Merge (Sort) Hebert Coelho e Nádia Félix Ordenação É a operação de rearranjar os dados em uma determinada ordem. Problema da ordenação - Definição formal
Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick F. M.
Quick Sort Considerações Sobre Algoritmos de Ordenação Estagiário PAE: Jesimar da S. Arantes Professor: Claudio F. M. Toledo 27 de Setembro de 2017 Estagiário PAE: Jesimar da S. Arantes Professor: ClaudioQuick
Projeto de algoritmos: Algoritmos Gulosos
Projeto de algoritmos: Algoritmos Gulosos ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 09/2008
Algoritmos de Ordenação. Cota inferior. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO
Algoritmos de Ordenação Cota inferior Professora: Fátima L. S. Nunes 1 1 1 Algoritmos de Ordenação Algoritmos de ordenação que já conhecemos: 2 2 2 Algoritmos de Ordenação Algoritmos de ordenação que já
AED2 - Aula 11 Problema da separação e quicksort
AED2 - Aula 11 Problema da separação e quicksort Projeto de algoritmos por divisão e conquista Dividir: o problema é dividido em subproblemas menores do mesmo tipo. Conquistar: os subproblemas são resolvidos
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 09 Algoritmos de Ordenação Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída: conjunto de itens
Classes, Herança e Interfaces
Escola de Artes, Ciências e Humanidades EACH-USP ACH2002 Introdução à Ciência da Computação II Professor: Delano Medeiros Beder revisada pelo professor: Luciano Digiampietri EACH Segundo Semestre de 2011
Complexidade Assintótica
Complexidade Assintótica ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008 Material baseado
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Professor Ariel da Silva Dias Algoritmos Divisão e Conquista Construção incremental Resolver o problema para um sub-conjunto dos elementos de entrada; Então, adicionar
Ordenação: QuickSort. Prof. Túlio Toffolo BCC202 Aula 15 Algoritmos e Estruturas de Dados I
Ordenação: QuickSort Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 15 Algoritmos e Estruturas de Dados I QuickSort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação
QuickSort CI/2015. Análise e Projeto de Algoritmos. - Prof. Lucídio A. F. Cabral
QuickSort 1 Quicksort A[p q] A[q+1 r] Ordena um vetor A[p r] Divisão Particiona um vetor A em 2 subvetores A[p..q] e A[q+1..r], de tal modo que cada elemento de A[p..q] seja menor ou igual a cada elemento
Hashing. ACH Introdução à Ciência da Computação II. Delano M. Beder
ing ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 11/2008 Material baseado em slides do professor
Métodos de ordenação. Bubble sort:
Métodos de ordenação Bubble sort: O método de ordenação por bubble sort ou conhecido como bolha consiste em compara dados armazenados em um vetor de tamanho qualquer, comparando cada elemento de uma posição
Divisão e Conquista. Norton T. Roman. Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder
Divisão e Conquista Norton T. Roman Apostila baseada nos trabalhos de Cid de Souza, Cândida da Silva e Delano M. Beder Divisão e Conquista Construção incremental Ex: Consiste em, inicialmente, resolver
ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II
ESTRUTURAS DE DADOS E ALGORITMOS ALGORITMOS DE ORDENAÇÃO POR COMPARAÇÃO - II Adalberto Cajueiro Departamento de Sistemas e Computação Universidade Federal de Campina Grande ALGORITMOS VISTOS ANTERIORMENTE
Quicksort. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Quicksort David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Quicksort Proposto por Hoare em 1960 e publicado em 1962. É o algoritmo de ordenação interna mais rápido que se conhece para uma ampla
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista ( )
Projeto e Análise de Algoritmos Aula 4: Dividir para Conquistar ou Divisão e Conquista (2.1-2.2) DECOM/UFOP 2013/1 5º. Período Anderson Almeida Ferreira Adaptado do material desenvolvido por Andréa Iabrudi
Análise de Algoritmos Algoritmos de Ordenação
Análise de Algoritmos Algoritmos de Ordenação Nelson Cruz Sampaio Neto [email protected] Universidade Federal do Pará Instituto de Ciências Exatas e Naturais Faculdade de Computação 5 de abril de 2016
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
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 Tópicos Introdução Ordenação por bolha (bubble sort)
Estruturas de Dados 2
Estruturas de Dados 2 Algoritmos de Ordenação em Tempo Linear IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/38 Algoritmos de Ordenação em Tempo Linear Limite Assintótico
ALGORITMOS DE ORDENAÇÃO
ALGORITMOS DE ORDENAÇÃO Prof. André Backes Conceitos básicos 2 Ordenação Ato de colocar um conjunto de dados em uma determinada ordem predefinida Fora de ordem 5, 2, 1, 3, 4 Ordenado 1, 2, 3, 4, 5 OU 5,
Mergesort. Aula 04. Algoritmo Mergesort. Divisão e Conquista. Divisão e Conquista- MergeSort
Mergesort Aula 0 Divisão e Conquista- MergeSort Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Mergesort é um algoritmo de ordenação recursivo Ele recursivamente ordena as duas
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA
ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro [email protected] Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA MÉTODOS MAIS EFICIENTES QUE O(N 2 ) Método Quicksort Método
Algoritmos de Ordenação
Algoritmos de Ordenação Introdução à Ciência da Computação Prof. Edison Ishikawa Objetivo Apresentar diferentes algoritmos de ordenação de dados Mostrar como analisar os algoritmos em termos de tempo de
Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática
Estrutura de Dados Algoritmos de Ordenação Prof. Othon M. N. Batista Mestre em Informática Roteiro Introdução Ordenação por Inserção Insertion Sort Ordenação por Seleção Selection Sort Ordenação por Bolha
Algoritmos de Ordenação
Algoritmos de Ordenação! Problema: encontrar um número de telefone em uma lista telefônica! simplificado pelo fato dos nomes estarem em ordem alfabética! e se estivesse sem uma ordem?! Problema: busca
1 a Lista de Exercícios
Universidade Federal de Ouro Preto Instituto de Ciências Exatas e Biológicas Programa de Pós-Graduação em Ciência da Computação Projeto e Análise de Algoritmos - 1 o semestre de 2010 Professor: David Menotti
Algoritmos de Ordenação. Profº Carlos Alberto T. Batista
Algoritmos de Ordenação Profº Carlos Alberto T. Batista E-mail: [email protected] [email protected] Por que ordenar os dados? Encontrar elementos em uma lista torna-se algo simples e
Quick Sort. Considerações Sobre Algoritmos de Ordenação. Estagiário PAE: Jesimar da S. Arantes Professor: Claudio Quick F. M.
Quick Sort Considerações Sobre Algoritmos de Ordenação Professor: Claudio F. M. Toledo 26 de Outubro de 2016 Professor: Claudio Quick F. M. Sort Toledo 26 de Outubro de 2016 1 / 14 Quicksort: Escolha do
Técnicas de projeto de algoritmos: Indução
Técnicas de projeto de algoritmos: Indução ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo [email protected] 08/2008
Busca Binária. Aula 05. Busca em um vetor ordenado. Análise do Busca Binária. Equações com Recorrência
Busca Binária Aula 05 Equações com Recorrência Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Idéia: Divisão e Conquista Busca_Binária(A[l...r],k) 1:if r < lthen 2: index = 1
Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet
Aula 17 Quick Sort Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno Ordenação
MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017
PROVA 1 MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017 Nome: Número USP: Instruções: (1 ) Esta prova é individual. (2 ) Não destaque as folhas deste caderno. (3 ) A prova consiste de 6
1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.
Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica
Análise de algoritmos
Análise de algoritmos Introdução à Ciência de Computação II Baseados nos Slides do Prof. Dr. Thiago A. S. Pardo Análise de algoritmos Existem basicamente 2 formas de estimar o tempo de execução de programas
5. Algoritmos de Ordenação
Introdução à Computação II 5952011 5. Algoritmos de Ordenação Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 5.1. Ordenação por Inserção 5.2. Ordenação por Seleção
Complexidade de Algoritmos
Complexidade de Algoritmos Prof. Diego Buchinger [email protected] [email protected] Prof. Cristiano Damiani Vasconcellos [email protected] Funções de Complexidade Considere
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Hashing Endereçamento Direto Tabelas Hash
Hashing Endereçamento Direto Tabelas Hash Professora: Fátima L. S. Nunes 1 1 1 Vimos até agora: Introdução Conceitos e técnicas de Orientação a Objetos Conceitos e aplicações de Complexidade Assintótica
HeapSort. Estrutura de Dados II Jairo Francisco de Souza
HeapSort Estrutura de Dados II Jairo Francisco de Souza HeapSort Algoritmo criado por John Williams (1964) Complexidade O(NlogN) no pior e médio caso Mesmo tendo a mesma complexidade no caso médio que
Projeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 10 Métodos de Ordenação de Complexidade Linear Edirlei Soares de Lima Ordenação Problema: Entrada: conjunto de itens a 1, a 2,..., a n ; Saída:
Estruturas Discretas
Estruturas Discretas 2017.2 Marco Molinaro > Indução Forte Corretude de Algoritmos 1/20 Indução Forte > Indução Forte Corretude de Algoritmos 2/20 Indução Forte X Indução Fraca Para provar Propriedade
Divisão e conquista. Eficiência de divisão e conquista
Divisão e conquista Divisão: resolver recursivamente problemas mais pequenos (até caso base) Conquista: solução do problema original é formada com as soluções dos subproblemas á divisão quando o algoritmo
Bubble Sort. Tempo total O(n 2 )
Bubble Sort Considere uma seqüência de n elementos que se deseja ordenar. O método da bolha resolve esse problema através de várias passagens sobre a seqüência Não é um algoritmo eficiente, é estudado
Mediana. Aula 09. Menor. i-ésimo menor elemento. Algoritmo de Seleção. -ésimo menor elemento. Mediana é o n+1. -ésimo menor ou o n+1
Mediana Aula 09 Algoritmo de Seleção Prof. Marco Aurélio Stefanes marco em dct.ufms.br www.dct.ufms.br/ marco Baseado em slides do Prof. Paulo Fiofilof Mediana é o n+1 2 -ésimo menor ou o n+1 2 -ésimo
SCC-501 Introdução à Ciência de Computação II
SCC-501 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis 2011 João
ALGORITMOS DE ORDENAÇÃO RECURSIVOS
1/14 ALGORITMOS DE ORDENAÇÃO RECURSIVOS Ordenação rápida ( Quicksort ) 2/14 Ordenação rápida ( Quicksort ) Ideia - Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar
Algoritmos e Estrutura de Dados. Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 3 Conceitos Básicos de Algoritmos Prof. Tiago A. E. Ferreira Definição de Algoritmo Informalmente... Um Algoritmo é qualquer procedimento computacional bem definido
Solução de Recorrências
CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS Solução de Recorrências Algoritmos e Estruturas de Dados I Natália Batista https://sites.google.com/site/nataliacefetmg/ [email protected]
AULA 13. Algoritmos p.526/582
AULA 13 Algoritmos p.526/582 Ordenação em tempo linear CLRS 8.2 8.3 Algoritmos p.527/582 Ordenação por contagem Recebe vetores A[1.. n] e B[1.. n] e devolve no vetor B[1.. n] os elementos de A[1.. n] em
QuickSort. Estrutura de Dados II Jairo Francisco de Souza
QuickSort Estrutura de Dados II Jairo Francisco de Souza Particionamento Mecanismo principal dentro do algoritmo do QuickSort Para particionar um determinado conjunto de dados, separamos de um lado todos
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional
Centro Federal de Educação Tecnológica de Minas Gerais Programa de Pós-Graduação em Modelagem Matemática e Computacional Disciplina: Algoritmos e Estruturas de Dados Professor: Flávio Cardeal Lista de
Algoritmos de Ordenação
Algoritmos de Ordenação Leandro Tonietto Unisinos [email protected] http://professor.unisinos.br/ltonietto Atualizado em 7-Jun-12 http://professor.unisinos.br/ltonietto/inf/lb2/sort.pdf ! Objetivos!
Análise de Problemas Recursivos. Algoritmos e Estruturas de Dados Flavio Figueiredo (
Análise de Problemas Recursivos Algoritmos e Estruturas de Dados 2 2017-1 Flavio Figueiredo (http://flaviovdf.github.io) 1 Lembrando de Recursividade Procedimento que chama a si mesmo Recursividade permite
Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia
Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina
UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO
Disciplina: Estrutura de Dados II Turma: 4EC/5CC Data: 13/11/15 Nota: Professor: Renato E. N. de Moraes Semestre: 2015-2 Valor: 0,0 pts Aluno: Lista de exercícios 04 1. O que é a eficiência assintótica
Análise e Complexidade de Algoritmos
Análise e Complexidade de Algoritmos Métodos de Ordenação - seleção e inserção - seleção e troca (bubble sort) - merge e quick sort - radix - hashing Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com
Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Algoritimos e Estruturas de Dados III CIC210
Algoritimos e Estruturas de Dados III CIC210 Divisão e Conquista Haroldo Gambini Santos Concurso Universidade Federal de Ouro Preto - UFOP 3 de setembro de 2009 Haroldo Gambini Santos Divisão e Conquista
CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI
CURSO DE ESTRUTURA DE DADOS MÓDULO: ALGORITMOS DE ORDENAÇÃO E PESQUISA PROFESSORA: DANIELA ELOISE FLÔR COLABORADORA: MARIA CAROLINA SILA VANUCHI O QUE SÃO ALGORITMOS DE ORDENAÇÃO? São algoritmos que organizam
Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo
Arquivos Sequenciais Estruturas de Dados II Vanessa Braganholo Arquivos Sequenciais } Pq arquivos sequenciais? Relembrando } Relembrando: uma tabela ou arquivo é um conjunto de registros que possuem a
O Problema da Ordenação Métodos de Ordenação Parte 1
Métodos de Ordenação Parte 1 SCC-201 Introdução à Ciência da Computação II Rosane Minghim 2010 Ordenação (ou classificação) é largamente utilizada Listas telefônicas e dicionários Grandes sistemas de BD
Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort. Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional
Classificação e Pesquisa Aula 6 Métodos de Ordenação: ShellSort e QuickSort Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Plano de Ensino e Aprendizagem ( PEA) Algoritmo ShellSort Proposto por
SCC-201 Introdução à Ciência de Computação II
SCC-201 João Luís Garcia Rosa 1 Ricardo J. G. B. Campello 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br
MÉTODOS DE ORDENAÇÃO. Introdução à Programação SI2
MÉTODOS DE ORDENAÇÃO Introdução à Programação SI2 2 Conteúdo Conceitos básicos Classificação por troca Classificação por inserção Classificação por seleção 3 Conceitos Básicos Ordenar: processo de rearranjar
