5 хэш-таблица

1 хэш-функция

Хэш-функция, которая отображает входной сигнал на выход.

  • 1. То же хэш-функция всегда будет отображаться на тот же вход индекса. Же вход, то результат будет тот же. Вход яблоко, каждый раз с получением 4.
  • 2. хеш-функция не будет вызывать ввод сопоставляется с различными индексами.
  • 3. хэш-функции до массива, как большой прибыли действует только индекс.

Хэш таблица также известна как хэш-карта, карты, словари и ассоциативные массивы.

2. Область применения

2.1 хэш-таблица используется для поиска

Создание телефонной книги

phone_book = {}
#或者phone_book = dict()
phone_book["马云"]=18888888888
phone_book["马化腾"]=16868686868
#获取马云的练习方式
print(phone_book["马云"])

Хэш таблица не подходит для разрешения DNS ,
независимо от того , какой сайт посещения, их адреса должны быть преобразованы в IP - адрес. в качестве

baidu.com -> 183.232.231.174
sina.com -> 36.156.86.241
163.com -> 111.3.84.41

2,2 для предотвращения повторения

Если ответственное управление избирательных участков. Только один голос за человека. Кто - то голос, мы должны спросить его имя, и смотреть в списки для голосования, чтобы убедиться , что не проголосовал.
Если вы используете простой поиск, если список очень длинный, много времени будет долгое время.
Использование хэш - таблицы, это очень быстро.

voted={}
def check_voter(name):
    if voted.get(name):
        print("已经投过票了")
    else:
        voted[name]=True
        print("让他投")
check_voter("tom")    #让他投
check_voter("mike")    #让他投
check_voter("mike")    #已经投过票了

2.3 будет использоваться в качестве кэш-памяти хеш-таблицы

Предположим , что кто - то спросил расстояние между Землей и Луной вас, вам нужно искать, чтобы сказать друг другу ответ. Там будет местный ответ кэша, переспрашивать позже, прямой ответ.
кэш:

  • Пользователи могут быстро просмотреть страницы, так же, как вы помните, как расстояние между Землей и Луной, а потом кто-то спросил, может ответить немедленно
  • Сайт сделать меньше работы
cache={}
def get_page(url):
    if cache.get(url):
        return cache[url]    #返回缓存的数据
    else:
        data = get_data_from_server(url)
        cache[url]=data    #保存到缓存中
        return data

2.4 Резюме

Подходит для хэш-таблицы:

  • Отношения аналогового отображения
  • Предотвращение дубликатов
  • Кэш / данные Помните, что для того, чтобы избежать сервера, а затем генерировать их через процесс.

3. Конфликт

Хэш - ключ определенной длины, например, буквы AZ 26, больше , чем длина элементов хэш - таблицы. имеет сохраненную яблочно-1,49, если пополнение Авокадо-3,99, потому что два элемента назначены на ту же позицию, что и конфликт. Для того, чтобы избежать конфликтов: если два ключ отображается в том же месте, связанный список хранится в этом месте.
Если ваш продукт является началом целого, все элементы сохраняются в связанный список, хэш - таблица может быть медленным.
Опыт работы:

  • Функция хеширования является очень важной. Для равномерной хэш функциональной клавиши отображаются в различных местах хэш-таблицы.
  • Если хэш-таблица хранится в списке очень длинный, скорость хэш-таблицы будет резкое снижение. Если хэш-функция используется также, список не будет очень долго.

4. Производительность

Средний, выполняя различные операции постоянного время хеша (O (1)).
Временные константы: Но сколько хеш - таблицы, время , необходимое для того же.

Список производительности Сан -:

операционная Средний случай худший случай
искать O (1) О (п)
Вставить O (1) О (п)
Удалить O (1) О (п)

коэффициент заполнения 4,1

Коэффициент заполнения = число элементов , содержащихся в хэш - таблице / общее число положений ,
таких как длина списка равна 5, есть два элемента, коэффициент заполнения 0,4.
Коэффициент заполнения является мерой того , насколько позиция хэш - таблицы пуста.
Коэффициент заполнения больше 1 означает , что количество элементов превышает количество мест массива. После того , как коэффициент заполнения начинает расти, вам нужно будет добавить местоположение в хэш - таблице, которая , как известно , для регулировки длины. Отрегулируйте длину массива, как правило , в два раза.
Чем ниже коэффициент заполнения, тем меньше вероятность конфликта, тем выше производительность хеш - таблицы. Опыт: После того, как фактор Большого заполнения , чем 0,7, чтобы отрегулировать длину хэш - таблицы.

4,2 хорошая хэш-функция

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

5 Резюме

  • Конфликт очень плохо, функция хороший хэш может уменьшить конфликт
  • Хэш таблица поиска, вставки и удаления скорость очень быстро
  • Хэш-таблица для отображения между аналоговым
  • После того, как коэффициент заполнения более 0,7, настало время для регулировки длины хэш-таблицы.
  • Хэш-таблица может быть использована для буферизации данных
  • Путь хэш-таблица идеально подходит для повторения

рекомендация

отwww.cnblogs.com/csj2018/p/12088301.html