Algoritmos de pesquisa

Documentos relacionados
Algoritmos de pesquisa

Árvores Binárias e Busca. Jeane Melo

MÉTODOS DE PESQUISA DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza

Análise de complexidade

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

Algoritmos de Busca em Vetores

Aula teórica: /6. Enunciado

UNIVERSIDADE DA BEIRA INTERIOR

Algoritmia e Programação

6. Pesquisa e Ordenação

Programação de Computadores II. Cap. 17 Busca

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Aula T19 BCC202 Pesquisa (Parte 1) Pesquisa Binária. Túlio Toffolo

ÁRVORES BINÁRIAS DE BUSCA. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

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

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

Pesquisa. Pesquisa. Pesquisa. O problema de procurar(pesquisar) alguma informação numa tabela ou num catálogo é muito comum Exemplo:

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

Pesquisa: operação elementar

Árvores Binária de Busca. Prof. César Melo DCC/ICE/UFAM

Análise de complexidade

UNIVERSIDADE DA BEIRA INTERIOR

Algoritmos e Estruturas de Dados 2005/2006. Algoritmo: conjunto claramente especificado de instruções a seguir para resolver um problema

Árvore Binária de Busca. Prof. César Melo

INF1007: Programação 2 7 Busca em Vetores. 01/04/2014 (c) Dept. Informática - PUC-Rio 1

3. Vectores: Algoritmos de Pesquisa. João Pascoal Faria (versão original) Ana Paula Rocha (versão 2004/2005) Luís Paulo Reis (versão 2005/2006)

Heaps. Estrutura de Dados. Universidade Federal de Juiz de Fora Departamento de Ciência da Computação 1 / 35

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO

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

Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1

UNIVERSIDADE DA BEIRA INTERIOR

Análise e Complexidade de Algoritmos

UNIVERSIDADE DA BEIRA INTERIOR

LISTAS - ARMAZENAMENTO NÃO SEQUENCIAL COM MEMÓRIA DINÂMICA

EAD ARVORE BINÁRIA - ARMAZENAMENTO NÃO SEQUENCIAL COM VETORES

Algoritmos e Estrutura de Dados II. Árvore. Prof a Karina Oliveira.

UNIVERSIDADE DA BEIRA INTERIOR

ÁRVORE BINÁRIA DE BUSCA

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

Introdução à Programação

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

Métodos de Pesquisa em Memória Primária

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Exemplo. Lista Inicial (Desordenada) a. Iteração: Pivô: 25. Elemento da Esquerda: 48 Elemento da Direita: 12

termo Para resolver o problema, basta construir um Módulo (procedimento) para cada uma das definições: factor termo enquanto '+' ou '-'

DAINF - Departamento de Informática

ESTRUTURA DE DADOS (TCC )

QUESTÕES DE PROVAS ANTIGAS

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

Filas de Prioridade. Uma fila de prioridade pode ser vista como uma generalização das filas com as seguintes duas operações:

Projeto e Análise de Algoritmos

Aula 16: Pesquisa em Memória Primária - Árvores de Busca. Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP

Estruturas de Dados. Módulo 17 - Busca. 2/6/2005 (c) Dept. Informática - PUC-Rio 1

Módulo 16 - Ordenação

Capacitação em Linguagem C Parte 2

Listas Lineares. continuando...

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

ALGORITMOS + PASCAL. Métodos de Pesquisa

Introdução à Programação I

BCC202 - Estrutura de Dados I

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

Análise e Desenvolvimento de Algoritmos (2006/2007)

Pesquisa em Memória Primária Árvores de Busca. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR

Algoritmos de Pesquisa e Ordenação em Vectores

Estrutura de Dados. Algoritmos de Ordenação. Prof. Othon M. N. Batista Mestre em Informática

Árvore B. Uma Árvore B de ordem m éumaárvore,talque: Cada nó contém no máximo m

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

CES-11. Algoritmos e Estruturas de Dados. Carlos Alberto Alonso Sanches Juliana de Melo Bezerra

AULA 05 ESTRUTURA DE DADOS

Programação de Computadores II. Cap. 16 Ordenação

Disciplina de Estrutura de Dados. Algorítmos de Classificação; Métodos de Pesquisa; Arquivos.

Exercícios de Laboratório de ICC Engenharia Ambiental 2º Semestre de 2004

Ordenação e Pesquisa

Prova 1 PMR3201 Computação para Automação 1o. semestre 2016 Prof. Thiago de Castro Martins

Estruturas de Repetição

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

Introdução Métodos de Busca Parte 1

Busca em Arranjos. Busca em arranjos. Busca em arranjos. Programação de Computadores. Busca em Arranjos

Processamento da Informação Teoria. Conjuntos e Busca de dados

Aula 03: Análise de algoritmos melhor caso, pior caso e caso médio

Estrutura de Dados. ! Listas lineares. ! Como manipulá-las: ! estática. ! dinâmicas. ! pilhas. ! filas

Técnicas de Programação II

Pesquisa Sequencial e Binária

Listas Estáticas. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Análise de Algoritmos

Algoritmos de Ordenação

Pesquisa e Ordenação. SCE121- Introdução a Programação. ICMC - USP - São Carlos 2009

Método de ordenação - objetivos:

MC102 - Algoritmos e programação de computadores. Aula 16: Busca e Ordenação em vetores

UNIVERSIDADE DE SÃO PAULO INSTITUTO DE CIÊNCIAS MATEMÁTICAS E DE COMPUTAÇÃO Departamento de Ciências de Computação

Busca. Fabrício J. Barth. BandTec - Faculdade de Tecnologia Bandeirantes

MÉTODOS DE ORDENAÇÃO DE DADOS EM MEMÓRIA PRIMÁRIA. Material da Prof. Ana Eliza

O problema da busca (ou pesquisa) - Dado um conjunto de elementos, onde cada um é identificado por uma chave, o objetivo da busca é localizar, nesse

Recursividade. Métodos iterativos. Prof. Cesar Augusto Tacla. Métodos iterativos utilizam estruturas de repetição

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

Algoritmos e Estruturas de Dados Prof. Osório PIP/CA - Aula 05 Pag.: 1

Árvores de Pesquisa (Parte I)

CES-11. Algoritmos e Estruturas de Dados. Árvores Operações sobre uma árvore Estruturas para armazenar árvores

Transcrição:

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 conjunto não está ordenado, o método usado é o exaustivo, que consiste em percorrer sequencialmente todo o conjunto (desde o primeiro) até se encontrar o elemento desejado ou, não o encontrando, se concluir que não existe. Quando o conjunto está ordenado, existem vários métodos, como sejam os de pesquisa sequencial e binária. No que se segue, considera-se que a ordenação é crescente.

Pesquisa exaustiva (algoritmo) Pesquisar o elemento Elem no vector V de tamanho tam k -1 // significa que Elem não foi encontrado em V i 0 Enquanto (i < tam) e (k = -1) Fazer Se (V[i] = Elem) então k i senão i i + 1 Se (k = -1) então Elem não se encontra em V senão Elem encontra-se na posição k

Pesquisa exaustiva (versão 1) int PesquisaExaustiva (int Elem, int V[], int tam) { int i = 0, k = -1; // k = posição onde se encontra Elem em V while ( (i < tam) && (k == -1) ) if (Elem == V[i]) k = i; else i = i + 1; if return (k == (k); -1) } return (-1); else return (k); return (k); }

Pesquisa exaustiva (versão 2) int PesquisaExaustiva (int Elem, int V[], int tam) { int i = 0; while ( (i < tam) && (Elem!= V[i]) ) i = i + 1; if (i == tam) return (-1); else return (i); }

Pesquisa sequencial (algoritmo) Pesquisar o elemento Elem no vector V de tamanho tam k -1 // significa que Elem ainda não foi encontrado em V i 0 // índice dos elementos do vector V Enquanto (i < tam) e (k = -1) Fazer Se (V[i] = Elem) então k i senão Se (V[i] < Elem) então i i + 1 senão k -2; // significa que Elem não está em V Se (k 0) então Elem encontra-se na posição k senão Elem não se encontra em V

Pesquisa sequencial (versão 1) int PesquisaSequencial (int Elem, int V[], int tam) { int i = 0, k = -1; // k = posição onde se encontra Elem em V while ( (i < tam) && (k == -1) ) if (Elem == V[i]) k = i; else if (V[i] < Elem) i = i + 1; else k = -2; return (k); }

Pesquisa sequencial (versão 2) int PesquisaSequencial (int Elem, int V[], int tam) { int i = 0; while ( (i < tam) && (V[i] < Elem) ) i = i + 1; if ( (i < tam) && (Elem == V[i]) ) return (i); else return (-1); }

Pesquisa binária (algoritmo) A ideia é comparar o elemento a pesquisar com o elemento que está ao meio do vector e analisar 3 situações diferentes: 1ª) se aquele elemento é igual ao que está ao meio, 2ª) se aquele elemento está antes do meio, 3ª) se aquele elemento está depois do meio. Se aconteceu a 1ª situação, então foi encontrado o elemento e está no vector naquela posição. Se aconteceu a 2ª situação, então basta pesquisar aquele elemento no subvector até ao meio. Se aconteceu a 3ª situação, então basta pesquisar aquele elemento no subvector do meio para a frente

Pesquisa binária (algoritmo iterativo) Pesquisar o elemento Elem no vector V de tamanho tam inicio 0 fim tam - 1 k -1 // k recebe a posição de Elem (no início presume-se que não está) Enquanto ( (inicio fim) e (k = -1) ) Fazer meio (inicio + fim) / 2 Se (Elem = V[meio]) então k meio senão Se (Elem < V[meio]) então fim meio 1 senão inicio meio + 1 Se (k 0) então Elem encontra-se em V na posição k senão Elem não se encontra em V

int PesquisaBinaria (int Elem, int V[], int tam) { int inicio = 0, fim = tam 1, meio, k = -1; while ( (inicio <= fim) && (k == -1) ) { meio = (inicio + fim) / 2; if (Elem == V[meio]) k = meio; else if (Elem < V[meio]) fim = meio - 1; else inicio = meio + 1; } return (k); }

Valor a pesquisar: 34

Valor a pesquisar: 34 1ª tentativa:

2ª tentativa:

2ª tentativa: 3ª tentativa:

4ª tentativa:

4ª tentativa: O valor 34 foi encontrada após 4 tentativas

Valor a pesquisar: 40

Valor a pesquisar: 40 1ª tentativa:

2ª tentativa:

2ª tentativa: 3ª tentativa:

4ª tentativa:

5ª tentativa:

6ª tentativa:

6ª tentativa: O valor 40 não está na lista, o que se concluiu após 6 tentativas