0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<ul><li><a>1. Балансировка красно-чёрных деревьев - Три случая</a></li>
1
<ul><li><a>1. Балансировка красно-чёрных деревьев - Три случая</a></li>
2
<li><a>2. Ход конём по битам. Шахматный Bitboard</a></li>
2
<li><a>2. Ход конём по битам. Шахматный Bitboard</a></li>
3
<li><a>3. Алгоритм Джонсона на орграфе с отрицательными дугами</a></li>
3
<li><a>3. Алгоритм Джонсона на орграфе с отрицательными дугами</a></li>
4
<li><a>4. Удаление узлов из красно-чёрного дерева</a></li>
4
<li><a>4. Удаление узлов из красно-чёрного дерева</a></li>
5
<li><a>5. Идеальное хэширование</a></li>
5
<li><a>5. Идеальное хэширование</a></li>
6
<li><a>6. Пирамидальная сортировка выбором</a></li>
6
<li><a>6. Пирамидальная сортировка выбором</a></li>
7
</ul><h2><a>1. Балансировка красно-чёрных деревьев - Три случая</a></h2>
7
</ul><h2><a>1. Балансировка красно-чёрных деревьев - Три случая</a></h2>
8
<p>Двоичные деревья поиска - эта структура данных для хранения элементов с возможностью быстрого поиска. Идея проста и гениальна: "меньше - налево, больше - направо". На этом простота заканчивается и начинаются сложные вопросы балансировки дерева, чтобы оно не превратилось в длинную ветку.</p>
8
<p>Двоичные деревья поиска - эта структура данных для хранения элементов с возможностью быстрого поиска. Идея проста и гениальна: "меньше - налево, больше - направо". На этом простота заканчивается и начинаются сложные вопросы балансировки дерева, чтобы оно не превратилось в длинную ветку.</p>
9
<p><em>В этой статье мы дадим определение, перечислим правила размещения элементов в красно-чёрном дереве, рассмотрим алгоритм балансировки и закрепим сказанное на примере. Более подробно эту тему, а также другие виды двоичных деревьев поиска мы изучаем на курсе <a>"Алгоритмы для разработчиков"</a>.</em><a>Читать</a></p>
9
<p><em>В этой статье мы дадим определение, перечислим правила размещения элементов в красно-чёрном дереве, рассмотрим алгоритм балансировки и закрепим сказанное на примере. Более подробно эту тему, а также другие виды двоичных деревьев поиска мы изучаем на курсе <a>"Алгоритмы для разработчиков"</a>.</em><a>Читать</a></p>
10
<h2><a>2. Ход конём по битам. Шахматный Bitboard</a></h2>
10
<h2><a>2. Ход конём по битам. Шахматный Bitboard</a></h2>
11
<p>Шахматный конь стоит на шахматной доске и задумчиво смотрит в шахматную даль. Сколько разных ходов он может сделать?</p>
11
<p>Шахматный конь стоит на шахматной доске и задумчиво смотрит в шахматную даль. Сколько разных ходов он может сделать?</p>
12
<p>Хвала изобретателю шахмат, на доске <strong>64</strong> клетки.Хвала архитектору компьютеров - у типа <strong>ulong</strong> тоже <strong>64</strong> бита.Это же надо было случиться такому совпадению!Напрашивается гениальная идея - хранить <strong>всю доску</strong> в <em>одном целом числе</em>! Для этого решения существует даже специальный термин - <strong>Bitboard</strong> - битовая доска.</p>
12
<p>Хвала изобретателю шахмат, на доске <strong>64</strong> клетки.Хвала архитектору компьютеров - у типа <strong>ulong</strong> тоже <strong>64</strong> бита.Это же надо было случиться такому совпадению!Напрашивается гениальная идея - хранить <strong>всю доску</strong> в <em>одном целом числе</em>! Для этого решения существует даже специальный термин - <strong>Bitboard</strong> - битовая доска.</p>
13
<p>Так как же <strong>быстро</strong> найти количество ходов шахматного коня, используя эту идею?<a>Читать</a></p>
13
<p>Так как же <strong>быстро</strong> найти количество ходов шахматного коня, используя эту идею?<a>Читать</a></p>
14
<h2><a>3. Алгоритм Джонсона на орграфе с отрицательными дугами</a></h2>
14
<h2><a>3. Алгоритм Джонсона на орграфе с отрицательными дугами</a></h2>
15
<p>Алгоритм Джонсона находит кратчайший путь между всеми парами вершин во взвешенном ориентированном графе с отрицательными весами без негативных контуров.</p>
15
<p>Алгоритм Джонсона находит кратчайший путь между всеми парами вершин во взвешенном ориентированном графе с отрицательными весами без негативных контуров.</p>
16
<p>О, как звучит! Давайте разберём условие задачи по частям.<a>Читать</a></p>
16
<p>О, как звучит! Давайте разберём условие задачи по частям.<a>Читать</a></p>
17
<h2><a>4. Удаление узлов из красно-чёрного дерева</a></h2>
17
<h2><a>4. Удаление узлов из красно-чёрного дерева</a></h2>
18
<p>Удаление узлов из красно-чёрного дерева - непростая задача, поэтому имеет смысл разделить её на несколько частей и рассмотреть каждый случай отдельно.</p>
18
<p>Удаление узлов из красно-чёрного дерева - непростая задача, поэтому имеет смысл разделить её на несколько частей и рассмотреть каждый случай отдельно.</p>
19
<p>В <a>прошлой статье</a> мы рассмотрели правила формирования красно-чёрного дерева поиска и рассмотрели случаи балансировки при добавлении элементов.</p>
19
<p>В <a>прошлой статье</a> мы рассмотрели правила формирования красно-чёрного дерева поиска и рассмотрели случаи балансировки при добавлении элементов.</p>
20
<p>Теперь поговорим об удалении элементов.<a>Читать</a></p>
20
<p>Теперь поговорим об удалении элементов.<a>Читать</a></p>
21
<h2><a>5. Идеальное хэширование</a></h2>
21
<h2><a>5. Идеальное хэширование</a></h2>
22
<p>Какова сложность поиска элемента по ключу? Это зависит от того, какую структуру данных использовать.</p>
22
<p>Какова сложность поиска элемента по ключу? Это зависит от того, какую структуру данных использовать.</p>
23
<p>В односвязном списке - линейная сложность.В отсортированном массиве или в двоичном дереве поиска - логарифмическая сложность.В хэш-таблице - сложность константная. Но это в лучшем случае. А в худшем … стремится к линейной…</p>
23
<p>В односвязном списке - линейная сложность.В отсортированном массиве или в двоичном дереве поиска - логарифмическая сложность.В хэш-таблице - сложность константная. Но это в лучшем случае. А в худшем … стремится к линейной…</p>
24
<p>А можно ли создать идеальную хэш-таблицу, чтобы сложность поиска элемента даже в худшем случае оставалась константной?<a>Читать</a></p>
24
<p>А можно ли создать идеальную хэш-таблицу, чтобы сложность поиска элемента даже в худшем случае оставалась константной?<a>Читать</a></p>
25
<h2><a>6. Пирамидальная сортировка выбором</a></h2>
25
<h2><a>6. Пирамидальная сортировка выбором</a></h2>
26
<p>Один из самых необычных алгоритмов сортировки массива - это HeapSort, в основе которого лежит алгоритм сортировки выбором, используется структура данных "куча" для быстрого нахождения максимального элемента, а также способ хранения двоичного дерева в линейном массиве.<a>Разберёмся со всем по порядку.</a></p>
26
<p>Один из самых необычных алгоритмов сортировки массива - это HeapSort, в основе которого лежит алгоритм сортировки выбором, используется структура данных "куча" для быстрого нахождения максимального элемента, а также способ хранения двоичного дерева в линейном массиве.<a>Разберёмся со всем по порядку.</a></p>
27
27