Хешування це фундаментальна структура даних, яка ефективно зберігає та отримує дані таким чином, щоб забезпечити швидкий доступ. Він передбачає зіставлення даних із певним індексом у хеш-таблиці за допомогою a хеш-функція що забезпечує швидкий пошук інформації за її ключем. Цей метод зазвичай використовується в базах даних, в болючі системи та різноманітні програми програмування для оптимізації операцій пошуку та пошуку.
базова смуга проти широкосмугової

Структури даних – хешування
Зміст
- Хеш-функція
- Що таке хеш-колізія?
- Методи вирішення зіткнень
- Застосування хешування
- Легка проблема з хешуванням
- Середня проблема з хешуванням
- Важка проблема хешування
Як це працює:
- Хеш-функція: Ви надаєте свої елементи даних у хеш-функцію.
- Хеш-код: Хеш-функція обробляє дані та дає унікальний хеш-код.
- Хеш-таблиця: Потім хеш-код вказує вам на певне місце в хеш-таблиці.
Хеш-функція
The хеш-функція це функція, яка приймає a ключ і повертає an індекс в хеш-таблиця . Мета хеш-функції — рівномірно розподілити ключі по хеш-таблиці, зводячи до мінімуму зіткнення (коли два ключі відображаються на той самий індекс).
Загальні хеш-функції включають:
- Метод поділу: Ключ % Розмір хеш-таблиці
- Метод множення: (Ключ * Константа) % розміру хеш-таблиці
- Універсальне хешування: Сімейство хеш-функцій, призначених для мінімізації колізій
Що таке хеш-колізія?
Хеш-колізія виникає, коли два різні ключі відображаються в одному індексі в хеш-таблиці. Це може статися навіть із хорошою хеш-функцією, особливо якщо хеш-таблиця заповнена або ключі схожі.
Причини хеш-колізій:
- Погана хеш-функція: Хеш-функція, яка не розподіляє ключі рівномірно по хеш-таблиці, може призвести до більшої кількості колізій.
- Високий коефіцієнт навантаження: Високий коефіцієнт завантаження (відношення ключів до розміру хеш-таблиці) збільшує ймовірність колізій.
- Схожі ключі: Ключі, подібні за значенням або структурою, мають більше шансів зіткнутися.
Методи вирішення зіткнень
Існує два типи методів вирішення колізій:
- Відкрита адресація:
- Лінійне зондування: Шукайте порожній слот послідовно
- Квадратичне зондування: Пошук порожнього слота за допомогою квадратичної функції
- Закрита адресація:
- Зв'язування: Зберігайте зіткнення ключів у зв’язаному списку або бінарному дереві пошуку в кожному індексі
- Кукушка: Використовуйте кілька хеш-функцій для розподілу ключів
Застосування хешування
Хеш-таблиці використовуються в багатьох програмах, зокрема:
- Бази даних: Зберігання та отримання даних на основі унікальних ключів
- Кешування: Зберігання часто використовуваних даних для швидшого пошуку
- Таблиці символів: Відображення ідентифікаторів на їхні значення в мовах програмування
- Маршрутизація мережі: Визначення найкращого шляху для пакетів даних
Що таке хешування?
Легка проблема з хешуванням
- Дізнайтеся, чи є масив підмножиною іншого масиву
- Об'єднання та перетин двох пов'язаних списків
- Дано масив A[] і число x, перевірте наявність пари в A[] із сумою як x
- Максимальна відстань між двома входженнями одного елемента в масиві
- Підрахуйте максимальну кількість балів на одній лінії
- Найчастіший елемент у масиві
- Знайдіть єдиний повторюваний елемент від 1 до n-1
- Як перевірити, чи дві дані множини не перетинаються?
- Неперекриваюча сума двох наборів
- Перевірте, чи два масиви рівні чи ні
- Знайти відсутні елементи діапазону
- Мінімальна кількість підмножин з різними елементами
- Видаліть мінімальну кількість елементів, щоб не було спільного елемента в обох масивах
- Знайти пари із заданою сумою так, щоб елементи пари були в різних рядках
- Полічіть пари із заданою сумою
- Підрахуйте четвірки з чотирьох відсортованих масивів, сума яких дорівнює заданому значенню x
- Сортувати елементи за частотою
- Знайдіть усі пари (a, b) у масиві, щоб a % b = k
- Згрупуйте слова з однаковим набором символів
- k-й окремий (або неповторюваний) елемент у масиві.
Середня проблема з хешуванням
- Знайдіть Маршрут із поданого списку квитків
- Знайдіть кількість співробітників під кожним працівником
- Найдовший підмасив із сумою, що ділиться на k
- Знайдіть найбільший підмасив із нульовою сумою
- Найдовша зростаюча послідовна підпослідовність
- Порахуйте окремі елементи в кожному вікні розміром k
- Знайти підмасив із заданою сумою | Набір 2 (обробка від’ємних чисел)
- Реалізація нашої власної хеш-таблиці з окремим ланцюжком у Java
- Реалізація власної хеш-таблиці з відкритою адресацією лінійного зондування в C++
- Мінімальна кількість вставок для формування паліндрому з дозволеними перестановками
- Максимально можлива різниця двох підмножин масиву
- Сортування за допомогою тривіальної хеш-функції
- Найменший підмасив з k різних чисел
Важка проблема хешування
- Клонуйте бінарне дерево з випадковими покажчиками
- Найбільший підмасив з рівною кількістю 0 і 1
- Усі унікальні трійки, сума яких дає задане значення
- Запити паліндромних підрядків
- Діапазон запитів на частоти елементів масиву
- Елементи, які потрібно додати, щоб усі елементи діапазону були присутні в масиві
- Cuckoo Hashing – Найгірший випадок O(1) Пошук!
- Підрахувати підмасиви, що мають загальну кількість різних елементів, так само, як і вихідний масив
- Максимальний масив із двох заданих масивів із збереженням того самого порядку
- Знайти суму всіх унікальних підмасивів для даного масиву.
- Послідовність Рекамана
- Довжина найдовшої суворої бітонічної підпослідовності
- Знайти всі повторювані піддерева
- Знайдіть, чи є у двійковій матриці прямокутник із кутами, рівними 1
Швидкі посилання:
- «Практичні завдання» з хешування
- 20 найпопулярніших питань для інтерв’ю на основі техніки хешування
- «Відео» про хешування
Рекомендовано:
програмування struct array c
- Вивчіть структуру даних і алгоритми | Підручник DSA