Структуры данных
October 26, 2023
Hash-таблицы (hash table)
Hash-таблица — неупорядоченная структура данных для быстрого доступа к значению по ключу.
Вместо индексов таблица генерирует хэши или ключи на основе значения. Расшифровав хэш мы можем быстро получить значение
Плюсы
Структура
- Словарь для хранения ключей
- Хэш-функция (преобразует ключ в уникальный хэш)
- Получение значения по хэшу
- Удаление значения по хэшу
Код
class HashTable { constructor() { this.memory = [] } hashKey(key) { var hash = 0 for (var index = 0; index < key.length; index++) { // базовая генерация hash var code = key.charCodeAt(index) hash = ((hash << 5) - hash) + code | 0 } return hash; } get(key) { var address = this.hashKey(key) return this.memory[address] } remove(key) { var address = this.hashKey(key) if (this.memory[address]) { delete this.memory[address] } } }
function hash(string, max) { let hash = 0 for (let i = 0; i < string.length; i++) { hash += string.charCodeAt(i) } return hash % max }
Проблемы
Коллизии
Слишком простая функция для генерации хэшей может привести к ситуации когда на один и тот же хэш будут ссылаться разные значения.
Потребление памяти
При большом размере таблица будет использоваться много памяти. При маленьком размере в таблице будет большой коэффициент заполнения, медленный поиск и удаление
Задачи
October 26, 2023, 14:21
0 views
0 reactions
0 replies
0 reposts