Carregar apresentação
A apresentação está carregando. Por favor, espere
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.
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.