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

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

Aula 10 Algoritmos de Busca

Apresentações semelhantes


Apresentação em tema: "Aula 10 Algoritmos de Busca"— Transcrição da apresentação:

1 Aula 10 Algoritmos de Busca
Aquiles Burlamaqui UERN

2 Roteiro Motivação Definição Tipos de Algoritmos Exemplos Prática

3 Motivação A maioria dos algoritmos estudados por cientistas da computação que resolvem problemas são algortimos de busca. Uma vez que armazenada uma informação, em um dado momento você precisará recuperá-la.

4 Definição “Algoritmo que toma um problema como entrada e retorna a solução para o problema, geralmente após resolver um número possível de soluções.” “Um algoritmo de busca é um algoritmo que recebe um parâmetro C e tenta achar um registro no arquivo (ou tabela) cuja chave é C. O algoritmo retorna um ponteiro para o registro, ou NULL (ou índice inválido) caso não ache o registro.”

5 Tipos de Algoritmos de Busca
Busca em vetor ordenado Busca seqüencial Busca Binária

6 Busca Seqüencial Problema:
determinar se um dado número está ou não está em um dado vetor ordenado.   Mais precisamente, dado um número x e um vetor crescente  v[0..n-1],  encontrar um índice  m  tal que  v[m] == x .

7 Busca Seqüencial // A função abaixo recebe um número x e um vetor
// crescente v[0..n-1]. Ela devolve um índice m // em 0..n-1 tal que v[m] == x. Se tal m não existe, // a função devolve -1. int buscaSequencial (int x, int n, int v[]) { int m = 0; while (m < n && v[m] < x) ++m; if (m < n && v[m] == x) return m; else return -1; }

8 Busca Binária A chave é comparada com o elemento no meio da tabela. Se for igual, a busca terminou. Caso contrário, ela deve continuar ou na metade inferior (se a chave for menor que o elemento do meio) ou na metade superior da tabela (se a chave for maior que o elemento do meio).

9 Busca Binária // A função abaixo recebe um número x e um vetor
// crescente v[0..n-1]. Ela devolve um índice m // tal que v[m] == x ou devolve -1 se tal m não // existe. int buscaBinaria (int x, int n, int v[]) { int e, m, d; e = 0; d = n-1; while (e <= d) { m = (e + d)/2; if (v[m] == x) return m; if (v[m] < x) e = m + 1; else d = m - 1; } return -1;

10 Busca Binária Sempre teremos
v[e-1]   <   x   <   v[d+1] . É a base de muitos algoritmos eficientes para diversos problemas.


Carregar ppt "Aula 10 Algoritmos de Busca"

Apresentações semelhantes


Anúncios Google