Вопрос проверяет понимание механизма хэширования и вычисления индекса для хранения данных в хэш-таблице.
Хэш-таблица — это структура данных, которая обеспечивает быстрый доступ к элементам по ключу. Основная идея заключается в использовании хэш-функции для преобразования ключа в индекс массива, где хранится значение. Это позволяет выполнять операции вставки, поиска и удаления в среднем за O(1).
index = hash(key) % table_size. Чтобы избежать отрицательных индексов, часто используют Math.abs(hash(key)) % table_size.class HashTable {
constructor(size) {
this.table = new Array(size);
this.size = size;
}
hash(key) {
let hash = 0;
for (let i = 0; i < key.length; i++) {
hash += key.charCodeAt(i);
}
return hash % this.size;
}
set(key, value) {
const index = this.hash(key);
if (!this.table[index]) {
this.table[index] = [];
}
this.table[index].push([key, value]);
}
get(key) {
const index = this.hash(key);
const bucket = this.table[index];
if (bucket) {
for (const [k, v] of bucket) {
if (k === key) return v;
}
}
return undefined;
}
}В этом примере хэш-функция суммирует коды символов строки, а затем берёт остаток от деления на размер таблицы. Коллизии разрешаются методом цепочек: в каждой ячейке хранится массив пар ключ-значение.
Вычисление позиции элемента в хэш-таблице основано на хэш-функции и операции взятия остатка. Этот подход обеспечивает быстрый доступ к данным и широко применяется в базах данных, кэшах и реализациях ассоциативных массивов. Понимание этого механизма важно для оптимизации производительности и выбора подходящей структуры данных.