Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.

Slides:



Advertisements
Apresentações semelhantes
LISTAS Dilvan Moreira, parcialmente baseado em material do prof. Ricardo Campello.
Advertisements

Programação em Java Prof. Maurício Braga
Programação em Java Prof. Maurício Braga
Um programa em C Bibliotecas Variáveis globais
Listas Lineares Estrutura que permite representar um conjunto de dados de forma a preservar a relação de ordem linear. Uma lista linear é composta de nós,
Linguagem de Programação X Métodos de Pesquisa
Aula 10 Algoritmos de Busca
Listas encadeadas Prof. Rosana Palazon.
Algoritmos de Pesquisa em Cadeias de Caracteres
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
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária – Árvores de Busca
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
Introdução Objetivos Como Biblioteca de SW
Classificação e Pesquisa de Dados
Laboratório de Programação de Computadores II 2S/2009.
Laboratório de Programação de Computadores II Aula 1 2S/2009.
Listas Encadeadas.
Algoritmos de Ordenação
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Algoritmos de Busca Parte II
Compressão de Textos Juliano Palmieri Lage.
Pesquisa em memória primária: hashing
Pesquisa em Memória Primária
Principais operações em Listas TPA Listas Simples Inserção no Final 1.void insereNofinalDaLista(Lista *l, Elemento e){ 2.Lista paux,p; 3. p.
Heap Sort TPA – Prof. Mateus Costa
Lista Encadeada Circular Lista Duplamente Encadeada
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Seminário 1: Revisão de C
Métodos de Ordenação e Busca
CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação.
Listas Simplesmente Encadeadas
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Árvores Binárias Profa. Patrícia A. Jaques Luiz Gonzaga Jr
Exceções Profa. Patrícia A. Jaques Alterada por Leandro Tonietto abr-15.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
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.
Revisão Luis Antonio Tavares
Laboratório I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Universidade do Vale do Rio dos Sinos - São Leopoldo -
Laboratório I Mateus Raeder. Mateus Raeder – maio de 2010 Polimorfismo e arrays  Algumas vezes não sabemos o tipo que está armazenado em uma variável.
Laboratório I Mateus Raeder. Mateus Raeder – abril de 2010 Expressões booleanas  Tipo boolean -Tipo de dado primitivo -Possui os valores: true e false.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Patrícia Jaques.
Programação e Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
CLASSIFICAÇÃO DE DADOS
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da profa. Renata Galante.
Redes de Computadores I Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof.
Programação II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo -
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
Fundamentos de Programação 1 Aula N. 02 Prof. SIMÃO Jean Marcelo SIMÃO Linguagem C “Laços de Repetição em C”
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Ambientação com a Sintaxe de Java: parte 2 Prof. Gustavo Wagner Slides Originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB  Centro de.
Transcrição da apresentação:

Programação II Laboratório II Prof. Mateus Raeder Universidade do Vale do Rio dos Sinos - São Leopoldo - Transparências baseadas nos originais da Prof. Patrícia Jaques

Programação II – Prof. Mateus Raeder Métodos para localizar entradas em tabelas, dado o valor de uma chave primária como argumento de pesquisa –Localizar: informações relativa às chaves: 35, 12 Pesquisa de Dados em Tabelas Chave PrimáriaInfo

Programação II – Prof. Mateus Raeder Técnica para Pesquisa Sequencial Fazer uma varredura serial da tabela, comparando o argumento de pesquisa com a chave de cada entrada, até ser encontrada uma que seja igual (sucesso) ou até que seja atingido o final da tabela (não foi encontrado).

Programação II – Prof. Mateus Raeder Pesquisa Serial em Tabela não ordenada public static int pesquisaSequencial (int tab[], int arg) { int i = 0; while (i < tab.length) { if (tab[i] == arg) return i; else i = i + 1; } return -1; } Exemplo: procurando chave 4

Programação II – Prof. Mateus Raeder public static int pesquisaSequencialOrdenada (int tab[], int arg) { int i = 0; while ((i < tab.length) && (tab[i]<= arg) ) { if (tab[i] == arg) return i; else i = i + 1; } return -1; } Exemplo: procurando chave 11 Pesquisa Serial em Tabela ordenada

Programação II – Prof. Mateus Raeder Pesquisa Sequencial Método mais simples Intuitivo

Programação II – Prof. Mateus Raeder Exercício: Fazer um algoritmo para Pesquisa Sequencial de uma tabela (ordenada e não ordenada), considerando a tabela como uma lista encadeada.

Programação II – Prof. Mateus Raeder Pesquisa Binária Método para ser aplicado em tabelas ordenadas Reduz o nro. de elementos a serem considerados pela metade Exemplo: Pesquisa de chave com valor

Programação II – Prof. Mateus Raeder Pesquisa Binária Técnica –Consiste na comparação do argumento de pesquisa (arg) com a chave da entrada localizada no endereço médio da tabela. –Se arg for maior do que a chave contida naquele endereço, o processo é repetido para a metade superior da tabela, e –se for menor, para a metade inferior. –Se for igual, a busca se encerra com sucesso. A área de pesquisa é reduzida à metade do número de elementos a cada vez

Programação II – Prof. Mateus Raeder Exemplo pesquisa binária (1)

Programação II – Prof. Mateus Raeder Exemplo pesquisa binária (2)

Programação II – Prof. Mateus Raeder Exemplo pesquisa binária (3)

Programação II – Prof. Mateus Raeder Algoritmo Pesquisa Binária Localizar, por busca binária, a posição ocupada pela chave de valor arg em um vetor tab, ordenado com reorganização física Parâmetros: tab: tabela onde será feita a pesquisa arg: argumento de pesquisa Retorno : -1não encontrou  -1 chave está na posição

Programação II – Prof. Mateus Raeder Algoritmo Pesquisa Binária public static int pesquisaBinaria (int tab[], int arg) { int inf, sup, med; inf = 0; sup = tab.length-1; while (inf <= sup) { med = (inf + sup)/2; //divisão inteira if (arg == tab[med]) return med; else if (arg > tab[med]) inf = med + 1 ; // procura na 2a. metade else if (arg < tab[med]) sup = med - 1; // procura na 1ª metade } return -1; } 1º infsup 2º infsup Exemplo: busca da chave 43 1º inf 3º

Programação II – Prof. Mateus Raeder Procedimento Recursivo para Pesquisa Binária public static int pesquisaBinariaR (int tab[], int arg) { return pesquisaBinariaR (tab, arg, 0, tab.length-1); } private static int pesquisaBinariaR (int tab[], int arg, int inf, int sup) { int med; if (inf > sup) return -1; med = (inf + sup)/2; //divisão inteira if (arg == tab[med]) return med; else if (arg > tab[med]) return pesquisaBinariaR(tab, arg, med + 1, sup); else return pesquisaBinariaR (tab, arg, inf, med - 1); }