Linguagem de Programação X Métodos de Pesquisa

Slides:



Advertisements
Apresentações semelhantes
Ordenação de Dados em Memória
Advertisements

Estruturas de Dados Marcio Gonçalves.
UNIVERSIDADE FEDERAL DE UBERLÂNDIA ENGENHARIA MECÂNICA INTRODUÇÃO À ALGORITMOS Professora: Fabíola Gonçalves.
Linguagem de Programação IX Métodos de Ordenação
Linguagem de Programação IV
Linguagem de Programação VI Tipos de Dados Compostos - structs
Exercício Exercício. Considere um algoritmo sequencial que busca um elemento em uma lista não ordenada a) Qual é a complexidade de tempo deste algoritmo.
Aula 10 Algoritmos de Busca
TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS ESTRUTURAS DE DADOS AVANÇADAS Aula /08/2011 Professor Leomir J. Borba-
Algoritmos de Busca CONTEÚDO (1) Motivação (2) Busca Linear
VOCÊ DEVERÁ COMPREENDER:
Introdução aos Métodos de Acesso AULA 7 – Parte II Profa. Sandra de Amo GBC053 – BCC
INE 5384 Estruturas de Dados Prof a. Patrícia Vilain
Pesquisa em Memória Primária
Medida do Tempo de Execução de um Programa
Medida do Tempo de Execução de um Programa
Pesquisa em Memória Primária
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Pesquisa Algoritmos de pesquisa recebem um alvo e tentam encontrá-lo dentro de um conjunto de elementos. Recuperação (ou hit): quando o algoritmo encontra.
Classificação e Pesquisa de Dados
Classificação (Ordenação) de dados
Métodos de Pesquisa: Seqüencial e Binária
Algoritmos Escher.
Método de Ordenação: InsertionSort
Métodos de Classificação por Seleção
Simulação de Sistemas Prof. MSc Sofia Mara de Souza AULA2.
Ponteiros.
Marco Antonio Montebello Júnior
Insertion Sort.
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
O Portal do Estudante de Computação
Inteligência Artificial
PROGRAMAÇÃO I UNIDADE 1.
Algoritmos de ordenação
Relato da discussão sobre disciplinas de laboratório para a Licenciatura – 29/5/2013 Objetivos Gerais: Compreender a importância da experimentação na construção.
ICC2 Aula 7 Fábio Nakano.
Aula prática 9 Alocação Dinâmica Monitoria de Introdução à Programação
Aula prática - análise contextual
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
Algoritmos e Estruturas de Dados II
Pesquisa em Memória Primária
Linguagem de Programação II Parte V
Desempenho, Método de Shell, Quicksort
Complexidade de algoritmos e Classificação (Ordenação) de dados
Aula 03 – BCC202 Análise de Algoritmos (Parte 1) Túlio Toffolo www
Universidade Católica de Pelotas Mestrado em Ciência da Computação
Métodos de Ordenação e Busca
Vetores e Matrizes Ameliara Freire
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.
Ceça Moraes – Introdução à Programação SI1
Procedimentos e Funções
Pesquisa Sequencial e Binária
INTRODUÇÃO.
Introdução à complexidade de algoritmos Luiz Gonzaga da Silveira Junior.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2014 Capítulo VII Variáveis Indexadas Numéricas.
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.
Lista Linear Base para outras estruturas
Prof. Hilton Cardoso Marins Junior
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.
Operador this Karen Busolin karenbusolin.wordpress.com.
CLASSIFICAÇÃO DE DADOS
Complexidade de Computação Katia Guimarães. Avaliando a Qualidade de um Algoritmo É preciso ter bem definido –O que é dado de entrada e –O que é esperado.
Aula Prática 6 Vetores e Matrizes Monitoria
Métodos de Pesquisa: Seqüencial e Binária
Métodos de Pesquisa: Sequencial e Binária
Classificação (Ordenação) de dados
Arrays Outline 7.1 Introdução 7.2 Arrays 7.3 Declarando e Criando Arrays 7.4 Exemplos usando arrays 7.5 Ordenando arrays 7.6 Procurando em.
USP – ICMC – SSC SSC0300 2º Semestre 2015
Classificação (Ordenação) de dados. Roteiro Contextualização e definições sobre Classificação Métodos de Classificação de Dados.
Métodos de Pesquisa: Seqüencial e Binária
Transcrição da apresentação:

Linguagem de Programação X Métodos de Pesquisa CST EM ANÁLISE E DESENVOLVIMENTO DE SISTEMA Linguagem C Linguagem de Programação X Métodos de Pesquisa Joseane Alves Freire 2ª Semestre 2009

Introdução Apresentaremos e discutiremos diferentes estratégias para efetuarmos a pesquisa (busca) de um elemento específico em um conjunto de dados. Esta operação é muito importante, pois é encontrada com muita freqüência em diversas aplicações. Apresentaremos os métodos de pesquisa seqüencial e binária sobre a estrutura de dados vetor.

Pesquisa Seqüencial Pesquisa Seqüencial (PS) Metodologia: É efetuada a verificação de cada elemento do conjunto, seqüencialmente, até que o elemento desejado seja encontrado (pesquisa bemsucedida), ou que todos os elementos do conjunto tenham sido verificados sem que o elemento procurado tenha sido encontrado(pesquisa mal-sucedida). Utilizado quando os elementos da variável indexada não estão ordenados. Como encontrar o elemento ’12’ no vetor? Quantas comparações foram necessárias neste caso?

Pesquisa Seqüencial Características Desempenho Forma mais simples de realizar pesquisas. Pode ser muito ineficiente quando o conjunto de dados é muito grande. Desempenho Pior Caso: é quando é necessário realizar n comparações (onde n é o número de elementos); Qual o cenário de pior caso possível ? Melhor Caso: é quando é necessário realizar somente uma comparação; Caso Médio: é quando é necessário realizar cerca de n/2 comparações.

Pesquisa Seqüencial Código Dá pra fazer melhor???? /*Faz a pesquisa sequencial do elemento val no vetor a[]*/ int pesquisa_sequencial(int a[], int n, int val){ int i; for(i=0;i<n;i++) if(a[i]==val) return 1; return 0; } Dá pra fazer melhor????

Pesquisa Binária É utilizado quando os elementos da variável indexada estão previamente ordenados e funciona assim: O elemento que se encontra no meio (aproximado) do vetor é localizado e comparado ao valor procurado. Se ele for igual ao valor procurado, a pesquisa é bem sucedida e terminada. Se ele for maior que o valor procurado, repete-se o processo na primeira metade do vetor. Se ele for menor que o valor procurado, repete-se o processo na segunda metade do vetor. Este processo é continuado até que o valor procurado seja localizado (pesquisa bem sucedida). ou então até que não reste mais um trecho do vetor a ser pesquisado (pesquisa mal-sucedida).

Pesquisa Binária Desempenho Pior Caso: Elemento não ocorre no vetor. Duas comparações são realizadas a cada ciclo. A cada repetição, a parte considerada na busca é dividida à metade Complexidade log2 n.

Ilustração da Pesquisa Binária

Fluxograma da Busca Binária

Busca Binária Código /*Faz a pesquisa binária do elemento val no vetor a[]*/ int pesquisa_binaria(int a[], int n, int val){ int inicio=0, meio, fim=n-1, achou=0; while ((achou!=1) && (inicio <= fim)){ meio = (inicio+fim)/2; if(val == a[meio]) achou=1; else{ if (val < a[meio]) //vamos procurar na primeira metade do vetor fim = meio - 1; //para isso basta mudar o indice FIM. else //vamos procurar na segunda metade do vetor inicio = meio + 1; //para isso basta mudar o indice INICIO. } return achou;

Comparando a Busca Seqüencial e Binária Busca Seqüencial O(n) Busca Binária O (log2 n) Exemplo: considere uma lista de 10.000 elementos A busca binária realizaria no pior caso 14 comparações enquanto que a busca seqüencial realizaria em média 5.000 comparações

Exercício Considere o vetor com 11 elementos abaixo e diga quantas comparações de igualdade realizam os algoritmos de Busca Linear e Busca Binária, na tentativa de se encontrar no vetor os valores: a) 3 b) 25 c) 70