Найти в Дзене
Николай Лазарев

Кэш (изучаю структуры данных)

Осваиваю Кэш. Отличная фраза) Надо почаще осваивать Кэш и побольше)).

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

Реализованы следующие методы:

  • def __init__(self, sz):

'''Конструктор'''

  • def hash_fun(self, key): # в качестве key поступают строки!

'''по входному значению вычисляет индекс слота'''

  • def is_key(self, key):

'''возвращает True если ключ имеется, иначе False'''

  • def put(self, key, value):

'''гарантированно записываем значение value по ключу key'''

  • def get(self, key):

'''возвращает value для key, или None если ключ не найден'''

  • def seek_slot(self, value):

'''функцию поиска слота - по входному значению сперва рассчитывает индекс хэш-функцией, а затем отыскивает подходящий слот для него с учётом коллизий, или возвращает None, если это не удалось'''

# находит индекс пустого слота для значения, или None

Ссылка на код

Ссылка на тесты