Preview only show first 10 pages with watermark. For full document please download

(show) -aula12

Pesquisa de dados

   EMBED

  • Rating

  • Date

    December 2018
  • Size

    145.7KB
  • Views

    4,254
  • Categories


Share

Transcript

Estruturas de Dados Pesquisa de Dados Prof. Alex Sandro [email protected] 1 Pesquisa Motivação Como fazer para localizar eficientemente um elemento dentro de um conjunto de dados? Exemplo Um programa de locadora de video pode buscar, dado um código numerico (ou nao), a descrição de um determinado título Tipos de busca a serem abordadas: Em vetores Árvores binárias de busca. 2 Busca em vetor Considerações Vetor de inteiros com n elementos Propósito: descobrir em que posição se encontra um elemento Busca linear Percorrer o vetor, elemento a elemento, verificando a existência da chave de pesquisa Caso seja encontrado o elemento no vetor, retornaremos seu índice Se não for encontrado, retornará -1 3 Busca Linear Vantagem Extremamente simples! Uso em vetores desordenados. Desvantagem Ineficiente quando o número de elementos do vetor for muito grande. Pode percorrer, no pior caso, todos os elementos para verificar se a chave está presente Se não estiver presente, aí é que percorre todo o vetor! Conclusão Melhorar a eficiência do algoritmo Condição: elementos não estejam em uma ordem aleatória 4 Busca linear ordenada Considerações Comparar a chave com o elemento a cada passada Uma chave não estará presente no vetor se acharmos um elemento maior que o mesmo Conclusão Se a chave procurada não estiver no vetor, este algoritmo se comporta de forma ligeiramente melhor que o anterior. A eficiência para busca em vetores ordenados pode ser melhorada!!! 5 Busca binária Princípio de funcionamento Testar se a chave de busca é menor que o elemento armazenado no meio do vetor Se for menor, a chave estará na primeira parte do vetor Caso contrário, estará na segunda parte do vetor. Se for igual, encontramos o elemento no vetor Definida a parte do vetor em que a chave se encontra, repete-se o procedimento considerando apenas a parte restante. Subdivide-se a parte de interesse, até encontrar o elemento ou chegar a uma parte do vetor com tamanho zero 6 Pesquisa Binária Exemplo: chave = 71 15 27 35 46 55 63 69 71 88 92 100 0 5 10 1 inicio = 0, fim = 10 , meio = 5: 71 > 63 inicio = 6 (meio +1), fim = 10, meio = 8 69 71 88 92 100 6 10 2 71 < 88 inicio = 6, fim = 7 (meio-1), meio = 7 69 71 Elemento encontrado! 71 = 71 6 7 7 3 Pesquisa binária Vantagem Desempenho é muito superior ao de busca linear Desvantagem Pior caso: quando o elemento não se encontra no vetor. Tamanho do vetor a cada repetição 1a repetição – n 2a repetição – n/2 3a repetição – n/4 … 8 Árvore de Pesquisa Considerações Estrutura eficiente para armazenar informações Facilidade de inserção e retirada de nós Boa taxa de utilização da memória Árvore Binária de Pesquisa Árvore binária onde cada nó obedece a seguinte propriedade: Todos os registros com chaves menores estão na subárvore esquerda Todos os registros com chaves maiores estão na subárvore direita 9 Árvore de Pesquisa Ilustração 10 Árvore de Pesquisa Procedimento para pesquisa Para encontrar um nó com a chave “x”: 1. 2. 3. 4. 5. Compare-o com a raiz Se for menor, caminhar para a subárvore esquerda Se “x” é maior, vá para a subárvore direita Repita o processo recursivamente até que a chave procurada seja encontrada ou então um nó folha é atingido. Se houver sucesso na pesquisa, retorne o conteúdo do registro Observação A “altura” de uma árvore é uma medida do tempo necessária para encontrar um determinado nó. 11 Árvore de Pesquisa Pergunta: Como imprimir uma árvore de pesquisa binária em ordem crescente? Operações em árvores binárias de busca Cada nó armazena uma informação do tipo int Não vamos considerar a possibilidade de repetição de valores associados aos nós da árvore Árvore vazia = NULL Operações a revisar: busca, insere e retira (Vamos ao código!) 12