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

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

Aula 10 Algoritmos de Busca Aquiles Burlamaqui UERN.

Apresentações semelhantes


Apresentação em tema: "Aula 10 Algoritmos de Busca Aquiles Burlamaqui UERN."— 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 Aquiles Burlamaqui UERN."

Apresentações semelhantes


Anúncios Google