- •Структуры данных: ограничения
- •Motivation
- •Dictionaries
- •Таблицы поиска
- •Таблицы поиска
- •Простой объект
- •Таблицы прямой адресации
- •Student
- •Таблицы прямой адресации
- •Таблицы прямой адресации
- •Direct Addressing
- •Если ключей меньше, чем элементов массива, то в качестве хэш-функции можно использовать деление
- •Хэширование–это преобразование входного массива данных определенного типа и произвольной длины в выходную битовую
- •Хэширование полезно, когда широкий диапазон возможных значений должен быть сохранен в
- •Hash-функции
- •Hash Functions
- •Хеширование данных
- •Hash-таблицы
- •Hash-таблицы
- •Хеширование применяется для сравнения данных:
- •Hash-функции
- •С точки зрения практического применения, хорошей является такая хэш-функция,
- •Хеширование данных
- •Hash Functions
- •Оценка качества хеш-функции
- •Hash Tables
- •Хеширование данных
- •Обработка коллизий
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Open Addressing (Linear Probing)
- •Подходы к апробированию
- •Linear Probing
- •Линейное апробование
- •Разрешение коллизий: линейное опробование
- •Поиск, Linear Probing
- •Квадратичное апробование
- •Разрешение коллизий: квадратичное опробование
- •Двойное хэширование
- •Разрешение коллизий: двойное хеширование
- •Обработка Коллизий
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Метод цепочек
- •Chaining
- •Обработка коллизий
- •При любом методе разрешения коллизий необходимо ограничить длину поиска элемента!!!!!!!!.
- •//функция создания хеш-таблицы: //метод деления по модулю (самый
- •Метод функции середины квадрата
- •Преимущества и недостатки хеш-таблиц
Open Addressing (Linear Probing)
Insert "John Doe" with ID = 123 hash(123) = 1
hash(123) = 1
Student hash()
Name John Doe
GPA 2.8
ID 123
Data1
0
2
3
4
Open Addressing (Linear Probing)
Insert "John Doe" with ID = 123 hash(123) = 1
data[1] is empty, no collision
|
|
|
Data1 |
|
|
hash(123) = 1 |
0 |
|
|
|
2 |
|
Student |
hash() |
3 |
|
|
|
|
Name |
John Doe |
|
4 |
GPA |
2.8 |
|
|
ID |
123 |
|
|
Open Addressing (Linear Probing)
Добавить "John Doe" with ID = 123 hash(123) = 1
data[1] пустая, нет коллизий Сохранить её
hash(123) = 1
hash()
Student
Name John Doe
GPA 2.8
ID 123
Data |
0 |
John Doe |
|
||
|
2.8 |
|
|
|
|
|
1 |
123 |
|
|
|
|
2 |
|
|
3 |
|
|
4 |
|
Open Addressing (Linear Probing)
Hash Table содержит одну запись
Data
0
1
2
3
4
John Doe
2.8
123
Open Addressing (Linear Probing)
Добавить "Jane Doe" with ID = 202
|
Data |
|
0 |
|
1 |
|
2 |
Student |
3 |
Name |
4 |
Jane Doe |
GPA
3.4
ID
202
John Doe
2.8
123
Open Addressing (Linear Probing)
Insert "Jane Doe" with ID = 202 hash(202) = 3
hash()
Student
Name
Jane Doe
GPA
3.4
ID
202
Data
0
1
hash(202) = 3
2
3
4
John Doe 2.8 123
Open Addressing (Linear Probing)
Insert "Jane Doe" with ID = 202 hash(202) = 3
data[3] is empty, no collision
hash()
Student
Name
Jane Doe
GPA
3.4
ID
202
Data
0
1
hash(202) = 3
2
3
4
John Doe 2.8 123
Open Addressing (Linear Probing)
Insert "Jane Doe" with ID = 202 hash(202) = 3
data[3]store it istherempty, no collision
hash()
Student
Name
Jane Doe
Data
0
1
hash(202) = 3
2
3
4
John Doe 2.8 123
Jane Doe 3.4 202
Open Addressing (Linear Probing)
Hash Table таблица содержит 2 записи
Data
0
1
2
3
4
John Doe
2.8
123
Jane Doe 3.4 202
Open Addressing (Linear Probing)
Добавить "Some Guy" with ID = 401
|
Data |
|
0 |
|
1 |
|
2 |
Student |
3 |
Name |
4 |
Some Guy |
GPA
3.5
ID
401
John Doe 2.8 123
Jane Doe 3.4 202