Віктор Турський про програмування / навігатор

концепції / data-structures

Структури даних

Позиція каналу: на практиці важливо знати властивості кожної структури та її складність за часом і памʼяттю, а не завчати реалізації — хоча Віктор і сам реалізовував топологічне сортування та повнотекстовий пошук, коли цього вимагала задача (друге Q&A). Сімейство дерев дістає практичний розбір: бінарні дерева пошуку («менше — ліворуч, більше — праворуч»), їхній вироджений випадок (вставте 1..5 по порядку — і дерево схлопується у звʼязний список з пошуком за O(N)), самобалансувальні повороти в стилі AVL, що тримають різницю висот піддерев у межах 1, і стрибок до дискодружніх B-дерев — з ремаркою, що файлова система ext4 використовує H-tree, спрощений аналог B-дерева (дерева, алгоритми пошуку і бази даних).

Поза деревами: хеш-мапа як ліки від злиття вкладеними циклами (один раз будуєш мапу з ключем user id, далі — лукапи за O(1)), у контрасті з відсортованими масивами — по них працює бінарний пошук, але сортування дороге, тож воно виправдане, лише якщо сортуєш один раз, а шукаєш сотню разів (навіщо потрібні алгоритми). І ймовірнісна гілка: фільтри Блума, реалізовані як бітовий масив, запакований в Uint32Array з адресацією бітів через ділення/остачу на 32. Його аргумент, що все це не теорія: Firefox з 2025 року возить каскад фільтрів Блума в продакшені, «Сільпо» ганяє фільтр у своїй CRM, а npm-бібліотеки для каскадного варіанта взагалі не існує — інколи структуру доводиться будувати самому (фільтр Блума і Firefox).

Розібрано у відео

Повʼязане

Алгоритмічна складність — мірило, яким вимірюють структури B-tree / B+ tree — дерево, яке насправді використовують бази даних Фільтр Блума — ймовірнісна зірка кластера Індекси баз даних — структури даних в індустріальному масштабі Глибоке вивчення фундаментальних речей — чому довговічне знання — це властивості, а не реалізації