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

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

Algoritmos de Busca Parte II Liandra Léa Ramos Raíssa Marson.

Apresentações semelhantes


Apresentação em tema: "Algoritmos de Busca Parte II Liandra Léa Ramos Raíssa Marson."— Transcrição da apresentação:

1 Algoritmos de Busca Parte II Liandra Léa Ramos Raíssa Marson

2 Parte do pressuposto de que o vetor está ordenado e realiza sucessivas divisões do espaço de busca comparando o elemento busca (chave) com o elemento no meio do vetor. Busca Binária

3 Entrada: - vetor ordenado com n elementos. Saída: - n, se o elemento procurado se encontra em vet[n]; - (-1), se o elemento procurado não se encontra no vetor. Busca Binária

4 Embora a escolha do ponto de início da busca possa ser arbitrária, pois o algoritmo funciona independentemente dele, o valor dessa variável influencia diretamente na eficiência do algoritmo A solução ótima é escolher um elemento no meio (ou mais próximo possível do meio) da sequência. Busca Binária Padrão

5 Procedimento: - Compara a chave (chamamos de elem) com o elemento do meio do vetor - Se elem for menor, pesquisa na primeira metade - Se elem for maior, pesquisa na segunda metade - Se for igual, retorna a posição. Busca Binária Padrão

6 ... Ini = 0 fim = N - 1 sucesso = 0 enquanto ( ( ini fim ) e ( sucesso = 0 ) ) meio = floor( (fim+ini)/2 ) //usa só a parte inteira da divisão se ( a [meio] = x ) sucesso = 1 senão se ( a [meio] < x ) ini = meio + 1 senão fim = meio – 1 fim se fim enquanto... Busca Binária Padrão

7 A eficiência do algoritmo pode ser melhorada se o sucesso (término) da busca não for testado em todo loop. Sucesso ocorre apenas uma vez em todo o processo Busca Binária Rápida

8 ... { //no início consideramos todo o vetor int ini = 0 int fim = n - 1 int meio enquanto ( ini <=fim ){ meio = floor( (fim+ini)/2 ); se ( a[meio] < x ) ini = meio + 1 //ajusta posição inicial senão fim = meio – 1 //ajusta posição final retorne meio; //elemento encontrado } retorne -1; //não encontrou o elemento... Busca Binária Rápida

9 Implementação //retorna a posição onde o item foi encontrado ou não encontrado. // A função abaixo recebe um número x e um vetor crescente v[0..n-1]. Ela devolve um índice meio em 0..n-1 tal que v[meio] == x. Se tal meio não existe, devolve -1. int buscaBinaria2( int x, int n, int v[]) { return bb( x, 0, n-1, v); } // A função bb recebe um número x e um vetor crescente v[ini..fim]. Ela devolve um índice meio em ini..fim tal que v[meio] == x. Se tal meio não existe, devolve -1. int bb ( int x, int ini, int fim, int v[]) { if (ini > fim) return -1; else { int meio = (ini + fim)/2; If (v[meio] == x) return meio; if (v[meio] < x) return bb( x, meio+1, fim, v); else return bb( x, ini, meio-1, v); } Busca Binária Rápida

10 Análise - Pior caso: log n - elemento não está no vetor - a cada repetição, a parte considerada na busca é ksdm dividida à metade Busca Binária Rápida RepetiçãoTamanho do problema 1n 2n/2 3n/4... log n1

11 Análise Considerando os algoritmos de busca vistos, a tabela abaixo faz uma comparação da ordem de grandeza dos mesmos Busca Binária Rápida AlgoritmoC (min)C (med)C (max) Busca LinearO(1)O(N) Busca Linear com SentinelaO(1)O(N) Busca Binária PadrãoO(1)O(log N) Busca Binária RápidaO(log N)

12 Busca Binária Rápida

13 /capitulo17.pdf html Bibliografia

14 OBRIGADA


Carregar ppt "Algoritmos de Busca Parte II Liandra Léa Ramos Raíssa Marson."

Apresentações semelhantes


Anúncios Google