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, настало время для регулировки длины хэш-таблицы.
- Хэш-таблица может быть использована для буферизации данных
- Путь хэш-таблица идеально подходит для повторения