6
1 Classificação e Pesquisa Tabelas Hash Hashing Prof. Rodrigo Rocha [email protected] http://www.bolinhabolinha.com Onde Estamos Ementa Pesquisa de Dados Seqüencial Binária Métodos de ordenação seleção e troca distribuição inserção Intercalação Árvores Pesquisa Binária AVL Patrícia B-Tree Tabelas hash Estática e Dinâmica

Classificação e Pesquisa - bolinhabolinha.com · 6 Hashing sort Exercício • Faça uma pesquisa e comente onde tabelas hash são utilizadas e com que finalidade? • Por que hash

Embed Size (px)

Citation preview

1

Classificação e Pesquisa

Tabelas HashHashing

Prof. Rodrigo [email protected] http://www.bolinhabolinha.com

Onde Estamos Ementa

• Pesquisa de DadosSeqüencialBinária

• Métodos de ordenaçãoseleção e trocadistribuição inserção Intercalação

• ÁrvoresPesquisaBináriaAVLPatrícia

• B-Tree• Tabelas hash

Estática e Dinâmica

2

Hashing sort

Não é um algoritmo de ordenação Organiza os dados conforme uma tabela de

mapeamento Método eficiente e veloz de busca e

organização baseado em funções matemáticas

• função comum de hash: módulo• existem outras, como fórmulas matemáticas

possui colisões• dois valores são mapeados para o mesmo lugar

Hashing sort

Função de EspalhamentoMapeamento de valor do elemento com índice do vetor

3

Hashing sort

Resolvendo colisão através de lista. cada “slot” da tabela hash contém uma lista ligada com todos os valores do mapeamento daquela chave.

Hashing sort Exemplo

• utilizando “resto” da divisãoporque o “mod” é uma operação rápida

• Lista de valores 10, 12, 20, 23, 27, 30, 31, 39, 42, 44, 45, 49, 53, 57, 60

• Fazendo hashing em um vetor de 15 elementos• elemento mod tamanho_do_vetor

0 1 2 3 4 5 6 7 8 9 10 11 12 13 1430,45,60

31 49 20 23,43

39 10 12,27,4257

44

4

Hashing sort Criando uma tabela hash em java

• Hashtable numbers = new Hashtable(); numbers.put("one", new Integer(1)); numbers.put("two", new Integer(2)); numbers.put("three", new Integer(3));

Para recuperar um número:• Integer n = (Integer)numbers.get("two");• if (n != null) {

System.out.println("two = " + n); }

Hashing sort Complexidade

• Usando o valor do elemento como índice do vetor ordenação em O(n) procura em O(1)

5

Hashing sort Exemplo de tabela hash

• http://cs.brynmawr.edu/cs206/WorkshopApplets/Chap11/Hash/Hash.html

Hashing sort

Exercícios• a-) Crie um hash em um vetor de 5 elementos

utilizando a seguinte lista de valores: 640, 972, 43, 514

• b-) Crie um hash em um vetor de 10 elementos utilizando a seguinte lista de valores: 990, 910, 862, 618, 58, 0, 953, 682, 258, 698

• c-) Crie um hash em um vetor de 30 elementos utilizando a seguinte lista de valores: 661,151, 783, 901, 841, 37, 129, 370, 852, 763, 81,

261, 896, 657, 568

6

Hashing sort

Exercício• Faça uma pesquisa e comente onde tabelas hash

são utilizadas e com que finalidade?

• Por que hash é importante para criptografia ?

• Implemente uma tabela hash em qualquer linguagem de programação que você conheça.

Bibliografia

Livro texto• ZIVIANI, Nivio. Projeto de Algoritmos : com implementação em Pascal

e C.. 2ª ed. São Paulo: Pioneira Thomson Learning, 2004.• VELOSO, Paulo A. S.. Estrutura de Dados. 1ª ed. São Paulo: Campus,

1983.• CORMEN, Thomas H. Algoritmos : teoria e prática. 1ª ed. Rio de Janeiro:

CAMPUS, 2002.

Complementar• SCHILDT, Herbert. C Completo e Total. 3ª ed. São Paulo: Pearson

Education, 2005.• CELES, Waldemar; CERQUEIRA, Renato. Introdução a Estruturas de

Dados : com técnicas de programação em C. 4ª ed. Rio de Janeiro: Elsevier, 2004

• WIRTH, Niklaus. Algoritmos e Estruturas de Dados. 1ª ed. Rio de Janeiro: LTC, 1989

• TENENBAUM, Aaron M; SOUZA, Tereza Cristina Félix de. Estruturas de Dados usando C. 1ª ed. São Paulo: Makron Books,1995.