Algoritmos de pesquisa

Documentos relacionados
Algoritmos de pesquisa

Análise de complexidade

Árvores Binárias e Busca. Jeane Melo

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

UNIVERSIDADE DA BEIRA INTERIOR

EAD PILHA - DEFINIÇÃO

Aula 3 Listas Lineares Sequenciais Ordenadas. prof Leticia Winkler

Estruturas Discretas

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

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

Algoritmos e Estruturas de Dados I1 Prof. Eduardo 1

Análise e Complexidade de Algoritmos

INE5403 FUNDAMENTOS DE MATEMÁTICA DISCRETA

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

ALGORITMOS + PASCAL. Métodos de Pesquisa

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

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

Métodos Numéricos Zeros Posição Falsa e Ponto Fixo. Professor Volmir Eugênio Wilhelm Professora Mariana Kleina

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

Pesquisa e Ordenação

Pascal. -Cabeçalho do programa. - label - const - type - var - procedure - function. - integer - real - byte - boolean - char - string

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

Complexidade de Algoritmos

Departamento de Engenharia Rural Centro de Ciências Agrárias. Programação I

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

Busca em Memória Primária Estrutura de Dados II

ÁRVORE BINÁRIA DE BUSCA

ESTRUTURA DE DADOS E ALGORITMOS HEAPS E LISTAS DE PRIORIDADES

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro Sala 110 Prédio da Computação IECE - ITA

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

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

Computação Científica com MATLAB. Melissa Weber Mendonça

Arquivos Sequenciais. Estruturas de Dados II Vanessa Braganholo

Projeto e Análise de Algoritmos

Informática Parte 17 Prof. Márcio Hunecke

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

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

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

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

ORDENAÇÃO DE ARQUIVOS. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

ALGORITMOS DE ORDENAÇÃO RECURSIVOS

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

Ordenação e Pesquisa

SCC 202 Algoritmos e Estruturas de Dados I. Pilhas (Stacks) (implementação dinâmica)

DAINF - Departamento de Informática

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

Algoritmos de Ordenação: QuickSort

Introdução Métodos de Busca Parte 1

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

- o primeiro elemento a entrar na fila é o primeiro a sair (FIFO First In First Out ).

Árvores. SCC-202 Algoritmos e Estruturas de Dados I. Lucas Antiqueira

Informática para Ciências e Engenharias 2013/14. Teórica 7

INF111 Programação II Aulas 11, 12, 13 Ordenação

Um algoritmo deve conter passos não ambíguos, executáveis e que sejam terminados quando seguidos.

Linguagem C: Ordenação

Métodos de Programação I Ana Maria de Almeida 92. Um objecto (uma função, um método) diz-se recorrente se é definido em termos de si próprio.

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

HeapSort. Estrutura de Dados II Jairo Francisco de Souza

Método de ordenação - objetivos:

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 Elem no vetor V com tam elementos resultado -1 { significa que Elem não foi encontrado em V } i 1 Enquanto (i tam) e (resultado = -1) Fazer Se (V i = Elem) então resultado i senão i i + 1 Se (resultado = -1) então Elem não se encontra em V senão Elem encontra-se na posição resultado

Pesquisa exaustiva 1 (em MatLab) function [resultado] = PesquisaExaustiva_1 (Elem, V, tam) resultado = -1; % resultado = posição onde se encontra Elem em V i = 1; while i <= tam & resultado == -1 if Elem == V(i) resultado = i; else i = i + 1; end; end; % se resultado = -1, então Elem não está na lista, % senão Elem está na posição resultado

Pesquisa exaustiva 2 (em MatLab) function [resultado] = PesquisaExaustiva_2 (Elem, V, tam) i = 1; while i <= tam & Elem ~= V(i) i = i + 1; end; if i > tam resultado = -1; % resultado = posição de Elem em V else resultado = i; end; % se resultado = -1, então Elem não está na lista, % senão Elem está na posição resultado

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

Pesquisa sequencial 1 (em MatLab) function [resultado] = PesquisaSequencial_1 (Elem, V, tam) resultado = -1; % resultado é a posição de Elem em V; se -1 então não existe i = 1; while i <= tam & resultado == -1 if Elem == V(i) resultado = i; elseif V(i) < Elem else end; end; i = i + 1; resultado = -2; % se resultado = -1 ou -2, então Elem não está na lista, % senão Elem está na posição resultado

Pesquisa sequencial 2 (em MatLab) function [resultado] = PesquisaSequencial_2 (Elem, V, tam) i = 1; while i <= tam & V(i) < Elem i = i + 1; end; if i <= tam & Elem == V(i) resultado = i; else resultado = -1; end; % se resultado = -1, então Elem não está na lista, % senão Elem está na posição resultado

Pesquisa binária (algoritmo) A ideia é comparar o elemento a pesquisar com o elemento que está ao meio do vetor 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 vetor naquela posição. Se aconteceu a 2ª situação, então basta pesquisar aquele elemento no subvetor até ao meio. Se aconteceu a 3ª situação, então basta pesquisar aquele elemento no subvetor do meio para a frente

Pesquisa binária (algoritmo) Pesquisar Elem no vetor V com tam elementos inicio 1 fim tam resultado -1 { resultado = posição de Elem (-1 = não existe) } Enquanto (inicio fim) e (resultado = -1) Fazer meio (inicio + fim) / 2 Se (Elem = V meio ) Então resultado meio Senão Se (Elem < V meio ) Então fim meio 1 Senão inicio meio + 1 Se (resultado 1) Então Elem encontra-se em V na posição resultado Senão Elem não se encontra em V

Pesquisa binária iterativa (em MatLab) function [resultado] = PesquisaBinariaIt (Elem, V, tam) inicio = 1; fim = tam; resultado = -1; while inicio <= fim & resultado == -1 meio = floor((inicio + fim) / 2); if Elem == V(meio) resultado = meio; elseif Elem < V(meio) fim = meio - 1; else inicio = meio + 1; end; end; % se resultado = -1, então Elem não está na lista, % senão Elem está na posição resultado

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