Скачиваний:
24
Добавлен:
09.09.2020
Размер:
1.81 Mб
Скачать

Метод цепочек

Insert "Some Guy" with ID = 401 hash(401) = 1

Data

 

 

 

0

 

 

hash(401) = 1

1

 

 

 

 

Student

 

2

 

hash()

 

Name

 

3

 

 

GPA

Some Guy

 

4

3.5

 

 

ID

401

 

 

2.8

123

Jane Doe

John

3.4

202

Метод цепочек

Insert "Some Guy" with ID = 401 hash(401) = 1

data[1] is non-empty, collision!

Data

 

 

 

0

 

 

hash(401) = 1

1

 

 

 

 

Student

 

2

 

hash()

 

Name

 

3

 

 

GPA

Some Guy

 

4

3.5

 

 

ID

401

 

 

2.8

123 John Doe

Jane Doe

3.4

202

Метод цепочек

Insert "Some Guy" with ID = 401 hash(401) = 1

data[1] is non-empty, collision! Chaining says to add the new entry to the list at data[1]

Data

 

 

 

0

 

 

hash(401) = 1

1

 

 

 

 

Student

 

2

 

hash()

 

Name

 

3

 

 

GPA

Some Guy

 

4

3.5

 

 

ID

401

 

 

John Doe 2.8

123

Jane Doe

3.4

202

Метод цепочек

Insert "Some Guy" with ID = 401 hash(401) = 1

data[1] is non-empty, collision! Chaining says to add the new

 

Insert Some Guy in the list at data[1]

 

entry to the list at data[1]

Data

 

 

 

 

0

 

 

1

 

Student

2

 

 

 

hash()

 

Name

hash(401) = 1

3

GPA

Some Guy

4

3.5

 

ID

401

 

John Doe 2.8 123

Jane Doe

3.4

202

Метод цепочек

Hash Table contains three items

Операции над таблицей зависят

 

от средней длинны цепочки

Data

(за исключением добавления записей)

0

 

1

 

2

 

3

 

4

Some Guy 3.5 401

2.8

123

John Doe

Jane Doe 3.4 202

Chaining

Chaining puts elements that hash to the same slot in a linked list:

U

(universe of keys)

k1

Kk4 k5

(actual k keys) 7

k2

k3

k6

k8

 

——

k1 k4 ——

——

——

——

k5 k2 k7 ——

——

k3 ——

k8 k6 ——

——

Обработка коллизий

Multi-Level Hashing

Подобно методу цепочек, но каждый элемент в хэш-таблице связан с другой хеш-таблицей и с другой хэш-функцией

Хэшируя несколько раз, мы можем значительно уменьшить Шансы на коллизию

При любом методе разрешения коллизий необходимо ограничить длину поиска элемента!!!!!!!!.

Если для поиска элемента необходимо более 3–4 сравнений,

то эффективность использования такой хэш-таблицы

пропадает и ее следует реструктуризировать (т.е. найти другую хэш-функцию), чтобы минимизировать количество сравнений для поиска элемента.

//функция создания хеш-таблицы: //метод деления по модулю (самый

//распространённый)

int Hash(int Key,int HashTableSize)

{

return Key % HashTableSize;

}

Метод функции середины квадрата

Функция середины квадрата

преобразует значение ключа в число,возводит это число в квадрат,

из числа выбирает несколько средних

цифр,

интерпретирует эти цифры как адрес

записи.

Соседние файлы в папке лекции