6. Pesquisa e Ordenação

Tamanho: px
Começar a partir da página:

Download "6. Pesquisa e Ordenação"

Transcrição

1 6. Pesquisa e Ordenação Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 1 / 30 Pesquisa de Informação A pesquisa eficiente de informação é extremamente relevante, seja: pesquisa num catálogo indexado por uma relação de ordem, e.g. alfabética, como seja uma lista telefónica; pesquisa interna nos registos de uma base de dados: registos ordenados ou não ordenados; pesquisa de informação em páginas Web (pesquisa de texto); pesquisa de informação em dados binários, normalmente imagens, etc. A pesquisa sequencial é dos casos mais simples e é normalmente usada quando não se tem uma relação de ordem na informação a pesquisar. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 2 / 30

2 Pesquisa Sequencial A pesquisa sequencial consiste em procurar um valor x numa sequência de valores v[] com dimensão N. Vejamos a pesquisa com valores inteiros e strings (veremos mais tarde como fazer o mesmo com apenas um método): Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 3 / 30 Pesquisa Binária A pesquisa binária é uma estratégia eficiente de pesquisa de um valor x numa sequência ordenada de valores v[] indexado no intervalo (e, d): Ideia do algoritmo: Seja m a posição média de v[] Comparar x com v[m] Se x==v[m] então encontrou senão se x<v[m], procura x no intervalo [e,m-1] senão (x>v[m]), procura x no intervalo [m+1,d] Um exemplo: Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 4 / 30

3 Pesquisa Binária: versão recursiva Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 5 / 30 Pesquisa Binária: versão não recursiva Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 6 / 30

4 Pesquisa Indirecta Seja int o[] um vector que determina a ordem dos elementos de uma sequência de nomes String nomes[]. Como pesquisar a string nome no vector nomes[]? Efectuar pesquisa binária dos nomes através do vector auxiliar o[] que define a ordem dentro de nomes[]. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 7 / 30 Pesquisa Indirecta Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 8 / 30

5 Algoritmos de Ordenação Em que é que a ordenação pode ajudar para resolver tarefas importantes de programação? Verificar unicidade Como verificar se os elementos de um conjunto S são todos distintos? Ordenando S, os elementos repetidos ficam seguidos, pelo que basta verificar se S[i] = S[i + 1] para algum 1 i < n. Remover repetições Como remover todas as repetições de um dado elemento de S? Ordenar S e depois percorrer os seus elementos com 2 cursores. Prioritizar eventos Suponha que são dados um conjunto de tarefas para fazer, cada uma com o seu prazo. Ordenar os eventos de acordo com a data de deadline permite colocar as tarefas na ordem correcta. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 9 / 30 Algoritmos de Ordenação (cont.) Média/Selecção suponha-se que se pretende o k-ésimo item do conjunto S. Ordenar por ordem crescente. O valor procurado está em S[k]. Contagem/frequência Qual é o elemento mais frequente de S. Intersecção/Reunião a operação é trivial se os conjuntos estiverem ordenados. Procura eficiente como verificar se um dado elemento x pertence a um conjunto S? Se esta for uma operação frequente, compensa ordenar primeiro para depois usar pesquisa binária. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 10 / 30

6 Método de ordenação: selecção de máximo/mínimo Na posição i do vector v[], coloca-se o maior (ou menor) elemento entre os ainda não ordenados, i.e. que se encontram entre i + 1 e n 1 Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 11 / 30 Ordenação Indirecta Considere um vector com 4 objectos, cada um representando uma pessoa com nome, ano e local de nascimento, ordenados por ano de nascimento. Como obter esta informação ordenada, por ordem alfabética dos nomes das pessoas, sem alterar o vector original? Usar um vector auxiliar O[] que contenha a ordenação do vector original? Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 12 / 30

7 Ordenação Indirecta (cont.) Usando o método de ordenação por selecção de mínimo e admitindo que a classe Pessoa tem atributos nome, anonasc e concelho. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 13 / 30 Método de ordenação: inserção Este método de ordenação é designado de inserção porque, em cada passo, procura inserir um novo elemento na posição correcta de uma sequência já ordenada. Os passos associados ao método são: Supor que o vector v[] está já parcialmente ordenado (posições 0 a p-1); adicionar um novo elemento não ordenado é simples: basta ir de v[p] até v[0] para determinar a posição k do novo valor; deslocar os elementos entre v[k+1] e v[p]; adicionar o valor em v[k] Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 14 / 30

8 Método de ordenação: inserção O algoritmo pode ser simplificado se usarmos a posição 0 do vector com um valor de paragem (mais pequeno que qualquer outro do vector; supondo ordenação crescente): Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 15 / 30 Método de ordenação1: bolha (bubble-sort) Este método consiste em comparar os elementos do vector dois a dois e trocar os elementos que não estiverem na ordem desejada. O nome vem do facto de em cada iteração as comparações sucessivas de elementos deslocarem o maior (ou menor) elemento para as últimas posições do vector como se fosse o deslizar de uma bolha. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 16 / 30

9 Método de ordenação2: bolha (bubble-sort) O algoritmo 1, faz sempre n(n 1)/2 comparações. Se o vector ficar ordenado a meio das iterações, faz comparações desnecessárias. Uma optimização consiste em usar uma flag que sinaliza a ocorrência de trocas numa iteração. O algoritmo termina se não ocorrerem trocas na iteração anterior. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 17 / 30 Método de ordenação3: bolha (bubble-sort) Uma melhoria adicional é recordar em cada iteração onde se verificou a última troca e fazer o ciclo-j ir só até essa posição na iteração seguinte: As diferenças na eficiência destes 3 algoritmos de bubblesort só serão visíveis para valores grandes de n. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 18 / 30

10 Ordenação: Método Quick-Sort O quicksort é um dos algoritmos de ordenação mais eficiente (O(n log n)). Baseia-se numa estratégia recursiva dividir-para-conquistar. Supondo que se pretende ordenar um vector S, consiste em: 1 Se o número de elementos em S é 0 ou 1, S está ordenado; 2 Escolher um elemento v S. Chamamos-lhe pivot. 3 Dividir S v em dois vectores: S 1 = {x S {v} x < v}, elementos menores que o pivot S 2 = {x S {v} x v}, elementos maiores que o pivot Note-se que os elementos em S 1 e S 2 não estão necessariamente ordenados. 4 Aplicar recursivamente o algoritmo a S 1 e S 2 Neste algoritmo, o esforço está na partição do vector, sendo a estratégia de escolha do pivot importante. A junção dos sub-vectores já ordenados é uma simples colagem. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 19 / 30 Ilustração do Algoritmo Quicksort Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 20 / 30

11 Implementação do quick-sort Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 21 / 30 Implementação do quick-sort (cont.) Um método para concretizar a partição do vector, consiste em usar dois cursores a e b que inicialmente correspondem às extremidades do vector. Os cursores são deslocados em direcções opostas de forma a separarem os elementos menores que o pivot dos elementos maiores ou iguais. As decisões a tomar são: Se v[a] < pivot então a = a + 1 Se v[b] pivot então b = b 1 Troca v[a] com v[b] e incrementa a e b A partição está completa quando b < a. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 22 / 30

12 Implementação do quick-sort (cont.) Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 23 / 30 Optimização do Algoritmo Quicksort O quicksort é menos eficiente do que outros métodos para valores pequenos de N (número de elementos no vector). Assim, uma estratégia para melhorar ainda mais o desempenho do quicksort, é evitar que ele seja aplicado quando os sub-intervalos atingem um valor relativamente baixo 10 a 15 elementos, e nesses casos usar outro método. Teríamos algo como: Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 24 / 30

13 Ordenação: Método Mergesort A ideia base do algoritmo consiste em: subdivide o vector em duas partes, aplicar o algoritmo a cada parte, quando as duas partes estiverem ordenadas (2 vectores ordenados), faz-se a junção para produzir um vector final ordenado separa em 2 vectores mergesort de cada vector junta as listas ja ordenadas Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 25 / 30 Algoritmo mergesort - exemplo divide-and-conquer Exemplo típico da técnica de programação dividir-para-conquistar. procuramos dividir o nosso problema em sub-problemas mais pequenos que sabemos resolver e depois juntamos os resultados dos sub-problemas para obter o resultado final. subdividir o vector inicial em sub-vectores até termos dimensão 1. Juntar ordenadamente dois vectores de dimensão 1 é fácil, podemos depois juntar dois vectores de dimensão 2, etc. O método principal consiste em: Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 26 / 30

14 Mergesort - junção das partes Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 27 / 30 Funções de ordenação do Java Usar a class java.util.arrays que contém vários métodos para ordenar, e.g. static void sort(object[] a) static void sort(object[] a, Comparator c) Existem outros métodos específicos para inteiros ou strings. Em Java, a classe Arrays permite a invocação do método sort() para ordenar não apenas inteiros mas outro tipo de objectos. Para tal, os objectos têm de pertencer a classes que implementem a interface Comparable: public interface Comparable { int comparetoobject(object o); } Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 28 / 30

15 Funções de ordenação do Java (cont.) Como exemplo, suponhamos que temos a seguinte classe: class Pessoa implements Comparable { String nome; int idade;... public int compareto(object o) { Pessoa outra= (Pessoa) o; if (idade < outra.idade) return -1; if (idade > outra.idade) return 1; return 0; } } Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 29 / 30 Funções de ordenação do Java Deste modo, se tivermos um vector de objectos do tipo Pessoa é possível ordenar: Pessoa p[]= new Pessoa[N];... Arrays.sort(p); //ordena o vector de objectos Pessoa por idade É ainda possível melhorar este código com os genéricos do Java. Fernando Silva (DCC-FCUP) 6. Pesquisa e Ordenação Estruturas de Dados 30 / 30

Ordenação e Pesquisa

Ordenação e Pesquisa Ordenação e Pesquisa Luís Lopes DCC-FCUP Estruturas de Dados Pesquisa de Informação A pesquisa eficiente de informação é extremamente relevante, seja: num catálogo indexado por uma relação de ordem, e.g.

Leia mais

Algoritmos de ordenação Ordenação rápida ( Quicksort )

Algoritmos de ordenação Ordenação rápida ( Quicksort ) Ordenação rápida ( Quicksort ) Baseia-se num princípio muito simples que, quando aplicado recursivamente, acaba por ordenar o vector. Este princípio é composto por 2 passos essenciais: 1. Escolher um elemento

Leia mais

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

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

Leia mais

ALGORITMOS DE ORDENAÇÃO

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,

Leia mais

Algoritmos de Ordenação

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

Leia mais

Algoritmos de pesquisa

Algoritmos de pesquisa Define-se pesquisa como a operação que permite encontrar ou concluir que não existe, um dado elemento num dado conjunto. A pesquisa de um elemento pode ser feita num conjunto ordenado ou não. Quando o

Leia mais

Pedro Ribeiro 2014/2015

Pedro Ribeiro 2014/2015 Ordenação Pedro Ribeiro DCC/FCUP 2014/2015 Pedro Ribeiro (DCC/FCUP) Ordenação 2014/2015 1 / 35 Ordenação A ordenação é um passo inicial para muitos outros algoritmos Ex: encontrar a mediana Quando não

Leia mais

BCC202 - Estrutura de Dados I

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]

Leia mais

Collections Framework

Collections Framework Collections Framework 1 Arrays p Manipular array é bastante trabalhoso. p Dificuldades aparecem em diversos momentos: n não podemos redimensionar um array em Java; n é impossível buscar diretamente por

Leia mais

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2 6 Ordenação de Vetores. 01/10/2015 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 6 Ordenação de Vetores 01/10/2015 (c) Dept. Informática - PUC-Rio 1 Tópicos Introdução Ordenação bolha (bubble sort) Ordenação por seleção (selection sort) 01/10/2015 (c) Dept. Informática

Leia mais

Algoritmos de Ordenação

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

Leia mais

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

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

Leia mais

Algoritmos e Estruturas de Dados. Décima sexta aula: Quicksort

Algoritmos e Estruturas de Dados. Décima sexta aula: Quicksort Algoritmos e Estruturas de Dados Décima sexta aula: Quicksort Nesta aula vamos Estudar o quicksort. Considerar algumas variantes: Quicksort geral, parametrizando a função de comparação. Quicksort com partição

Leia mais

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 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

Leia mais

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006)

5. Análise de Complexidade de Algoritmos. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) 5. Análise de Complexidade de Algoritmos João Pascoal Faria (versão original) Ana Paula Rocha (versão 2003/2004) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Introdução Algoritmo: conjunto

Leia mais

Divisão e conquista. Eficiência de divisão e conquista

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

Leia mais

Algoritmos de Ordenação. Profº Carlos Alberto T. Batista

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

Leia mais

Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência

Algoritmos e Estruturas de Dados LEE 2013/2014. popular devido à facilidade de implementação e eficiência Algoritmos e Estruturas de Dados LEE 2013/2014 Algoritmos de Ordenação Parte II Quicksort [1] Provavelmente o algoritmo mais usado inventado nos anos 60 muito estudado e analisado desempenho bem conhecido

Leia mais

Análise e Complexidade de Algoritmos

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

Leia mais

Capítulo 14. Ordenação e pesquisa. Bubblesort. Alguns algoritmos de ordenação e pesquisa Medição do tempo de execução de um programa

Capítulo 14. Ordenação e pesquisa. Bubblesort. Alguns algoritmos de ordenação e pesquisa Medição do tempo de execução de um programa Capítulo Ordenação e pesquisa Alguns algoritmos de ordenação e pesquisa Medição do tempo de execução de um programa Bubblesort Identifica os pares de elementos contíguos que não estão na ordem correcta

Leia mais

Ordenação de Vectores

Ordenação de Vectores 4. Vectores: Algoritmos de Ordenação João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006) FEUP - MIEEC Prog 2-2006/2007 Ordenação de Vectores Problema

Leia mais

AED2 - Aula 11 Problema da separação e quicksort

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

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 12: Ordenação: Bubble, Selection e Insertion Sort Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Algoritmos de Pesquisa e Ordenação em Vectores

Algoritmos de Pesquisa e Ordenação em Vectores Algoritmos de Pesquisa e Ordenação em Vectores FEUP - MIEEC Programação 2-2008/2009 Pesquisa Sequencial Problema (pesquisa de valor em vector): Verificar se um valor existe no vector e, no caso de existir,

Leia mais

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler Aula 3 Listas Lineares Sequenciais Ordenadas prof Leticia Winkler 1 Listas Lineares Sequenciais Ordenadas Elementos da lista estão dispostos num vetor (contíguos na memória) e ordenado de acordo com alguma

Leia mais

MAC121 ALGORITMOS E ESTRUTURAS DE DADOS I 2O. SEMESTRE DE 2017

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

Leia mais

Métodos de Ordenação Parte I

Métodos de Ordenação Parte I Estrutura de Dados II Métodos de Ordenação Parte I Prof a Márcio Bueno [email protected] / [email protected] Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Rearranjar

Leia mais

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 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

Leia mais

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

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

Leia mais

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009

Vectores: Algoritmos de Ordenação. Algoritmos e Estruturas de Dados 2008/2009 Vectores: Algoritmos de Ordenação Algoritmos e Estruturas de Dados 2008/2009 Ordenação Problema (ordenação de vector) rearranjar os n elementos de um vector (v) por ordem crescente, ou melhor, por ordem

Leia mais

Estruturas de Dados 2

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

Leia mais

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

Ordenação de Dados. Ordenação de Dados UFSC-CTC-INE INE38 - Estruturas de Dados Ordenação de Dados Prof. Ronaldo S. Mello 00/ Ordenação de Dados Processo bastante utilizado na computação de uma estrutura de dados Dados ordenados garantem uma

Leia mais

Métodos de ordenação. Bubble sort:

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

Leia mais

Métodos de Classificação

Métodos de Classificação Métodos de Classificação 261 Objetivos e Caracterizações O acesso a um conjunto de dados é facilitado se o mesmo está armazenado conforme uma certa ordem, baseada num critério conhecido. O objetivo básico

Leia mais

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

Ordenação. Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho   BCC402 Aula 04 Algoritmos e Programação Avançada Ordenação Prof. Túlio A. M. Toffolo Prof. Marco Antonio M. Carvalho http://www.toffolo.com.br BCC402 Aula 04 Algoritmos e Programação Avançada Aplicações Como testar se todos os elementos de um conjunto

Leia mais

Bubble Sort. Tempo total O(n 2 )

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

Leia mais

Algoritmos Paralelos - ordenação

Algoritmos Paralelos - ordenação Algoritmos Paralelos - ordenação Fernando Silva DCC-FCUP (Alguns dos slides são baseados nos do livro Parallel Programming Techniques & Applications Using Networked Workstations & Parallel Computers, 2nd

Leia mais

1. O que é a eficiência assintótica de um algoritmo. Explique com suas palavras.

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

Leia mais

Interfaces POO. Prof. Marcio Delamaro

Interfaces POO. Prof. Marcio Delamaro Interfaces POO Prof. Marcio Delamaro Programação Orientada a Objetos Prof Marcio Delamaro ICMC/USP 1/41 O que é interface É um template de classe Outras classes podem seguir esse template Chamamos isso

Leia mais

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

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

Leia mais

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

Os métodos de ordenação que ordenam os elementos in situ podem ser classificados em três principais categorias: ORDENAÇÃO A atividade de ordenação é o processo de rearranjo de um certo conjunto de objetos de acordo com um critério (ordem) específico. O objetivo da ordenação é facilitar a localização dos membros

Leia mais

Algoritmos de Ordenação: QuickSort

Algoritmos de Ordenação: QuickSort Algoritmos de Ordenação: QuickSort 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

Leia mais

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

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

Leia mais

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas)

Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 em PDF via Moodle: Escolha apenas 5 exercícios para entrega Exercício 01 (Pilhas) Introdução à Computação II (Noturno) BCC Unesp Rio Claro/SP 2015 Lista Obrigatória 02 - Prof. Rafael Oliveira (Deve ser entregue em PDF via Moodle: Escolha apenas 5 exercícios para entrega) Exercício 01

Leia mais

Pesquisa sequencial e pesquisa binária

Pesquisa sequencial e pesquisa binária Pesquisa sequencial e pesquisa binária Armando Matos Departamento de Ciência de Computadores Universidade de Porto 2008 2 problemas importantes... Pesquisa: Procurar um valor numa lista ou, por exemplo,

Leia mais

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 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)

Leia mais

Recursividade. Objetivos do módulo. O que é recursividade

Recursividade. Objetivos do módulo. O que é recursividade Recursividade Objetivos do módulo Discutir o conceito de recursividade Mostrar exemplos de situações onde recursividade é importante Discutir a diferença entre recursividade e iteração O que é recursividade

Leia mais

Métodos de Ordenação Parte 2

Métodos de Ordenação Parte 2 Estrutura de Dados II Métodos de Ordenação Parte 2 Prof a Márcio Bueno [email protected] / [email protected] Material baseado nos materiais da Prof a Ana Eliza e Prof. Robson Lins Introdução

Leia mais

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

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

UNIVERSIDADE FEDERAL DO ESPÍRITO SANTO CENTRO UNIVERSITÁRIO NORTE DO ESPÍRITO SANTO

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

Leia mais

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva DCC-FCUP. Estruturas de Dados. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38

8. Árvores. Fernando Silva. Estruturas de Dados DCC-FCUP. Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 8. Árvores Fernando Silva DCC-FCUP Estruturas de Dados Fernando Silva (DCC-FCUP) 8. Árvores Estruturas de Dados 1 / 38 Árvores - estruturas não lineares (1) Uma lista é um exemplo de uma estrutura de dados

Leia mais

Algoritmos de Ordenação: MergeSort

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

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS. Árvores Binárias de Busca. Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS Árvores Binárias de Busca Cristina Boeres Árvore Binária de Busca 30! construída de tal forma que, para cada nó: nós com chaves menores estão na sub-árvore esquerda nós

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Algoritmos de Ordenação

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!

Leia mais

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 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á

Leia mais

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

Listas Estáticas. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich. *Baseado no material do Prof. Listas Estáticas SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic [email protected] Instituto de

Leia mais

Aula 18 Algoritmos básicos de busca e classificação

Aula 18 Algoritmos básicos de busca e classificação Aula 18 Algoritmos básicos de busca e classificação Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas e classificação de tabelas estão entre os mais usados. Considere por exemplo

Leia mais

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Busca em Vetor (search) Bruno Feijó Dept. de Informática, PUC-Rio Busca em Vetor Problema: Entrada: vetor v com n elementos elemento d a procurar Saída m se o elemento procurado está em

Leia mais

5. Algoritmos de Ordenação

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

Leia mais

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 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

Leia mais

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

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

Leia mais

Algoritmos de Ordenação em LISP

Algoritmos de Ordenação em LISP Algoritmos de Ordenação em LISP Léo Willian Kölln 8 de Agosto de 2006 Curso de Ciências da Computação Programação Funcional - INE5363 INE - Departamento de Informática e Estatística CTC - Centro Tecnológico

Leia mais

Existem duas categorias de algoritmos de ordenação: Os algoritmos de ordenação são avaliados de acordo com os seguintes critérios:

Existem duas categorias de algoritmos de ordenação: Os algoritmos de ordenação são avaliados de acordo com os seguintes critérios: MÉTODOS DE ORDENAÇÃO E PESQUISA ORDENAÇÃO: consiste em arranjar um conjunto de informações semelhantes numa ordem crescente ou decrescente; PESQUISA: consiste em executar uma pesquisa sobre a estrutura

Leia mais

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 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

Leia mais