vak: (Default)
[personal profile] vak
Набрёл на полезные структуры данных, которые не встретишь в учебниках.
  • Строп - хранит длинную строку в виде дерева, состоящего из небольших подстрок.
  • Буферное окно - динамический массив, позволяющий эффективную вставку и удаление элемента в некоторой области.
  • Таблица фрагментов - представление текстового документа, редактируемого в текстовом редакторе.

Редактор Руднева, а точнее RAND Editor, лежащий в его основе, построен как раз на таблице фрагментов. Был бы интересный челлендж: вытащить из тех исходников реализацию таблицы фрагментов и переписать на современный Си++ или Rust.

Date: 2024-03-30 08:54 (UTC)
lxe: (Default)
From: [personal profile] lxe
Vantage point tree — сбалансированное бинарное дерево для поиска по близости в многомерном метрическом пространстве.

http://pnylab.com/pny/papers/vptree/main.html
http://pnylab.com/pny/papers/vptree/vptree.pdf

(Есть еще вариант с делением плоскими медианными сечениями, но я забыл аббревиатуру.)