A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Linguagem de Programação X Métodos de Pesquisa"— Transcrição da apresentação:

1 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

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

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

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

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

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

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

8 Ilustração da Pesquisa Binária

9 Fluxograma da Busca Binária

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

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

12 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


Carregar ppt "Linguagem de Programação X Métodos de Pesquisa"

Apresentações semelhantes


Anúncios Google