На этом шаге рассмотрим хеш-функции.
Хеш-функция представляет собой функцию, которая получает строку (любая последовательность байтов) и возвращает число. В научной терминологии говорят, что хеш-функция "отображает строки на числа". Можно подумать, что найти закономерности получения чисел для подаваемых на вход строк невозможно. Однако хеш-функция должна соответствовать некоторым требованиям:
Итак, хеш-функция связывает строки с числами.
Начнем с пустого массива:
Все цены будут храниться в этом массиве; передадим хеш-функции строку "апельсины".
Хеш-функция выдает значение "3". Сохраним цену апельсинов в элементе массива с индексом 3.
Добавим молоко. Передадим хеш-функции строку "молоко".
Продолжайте действовать так, и со временем весь массив будет заполнен ценами на товары.
А теперь вы спрашиваете: сколько стоит авокадо? Искать в массиве ничего не нужно, просто передайте строку "авокадо" хеш-функции.
Результат показывает, что значение хранится в элементе с индексом 4.
Хеш-функция сообщает, где хранится цена, и вам вообще не нужно ничего искать! Такое решение работает, потому что:
Свяжите воедино хеш-функцию и массив, и вы получите структуру данных, которая называется хеш-таблицей. Хеш-таблица станет первой изученной вами структурой данных, с которой связана дополнительная логика. Массивы и списки напрямую отображаются на адреса памяти, но хеш-таблицы устроены более умно. Они определяют место хранения элементов при помощи хеш-функций.
На следующем шаге рассмотрим реализацию хеш-таблицы в языке Python.