<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850627</guid>
        <pubDate>Tue, 10 Aug 2021 04:26:45 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850627</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850602'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-09T18:25:33+03:00">09.08.21, 15:25</time></span><div class='quote '>в массиве элементы идут последовательно, память может быть фрагментирована. Выделить непрерывный кусок памяти и частями - это совершенно разные вещи.<br>
</div></div><br>
Я не знаю, кто Вам такой ерунды наговорил, что массив непременно занимает непрерывный блок памяти. Простейший пример - массив строк переменной длины. Какой там вообще может быть непрерывный кусок? будь так - увеличение длины первого элемента на байт приводило бы к копированию всего массива.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850611</guid>
        <pubDate>Mon, 09 Aug 2021 17:56:24 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850611</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850602'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-09T15:25:33+00:00">09.08.21, 15:25</time></span><div class='quote '>Выделить непрерывный кусок памяти и частями - это совершенно разные вещи.</div></div><br>
В чём проблема выделять не непрерывный кусок? Вон std::deque в плюсах, например, с индексацией и без непрерывного расположения в памяти.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850602'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-09T15:25:33+00:00">09.08.21, 15:25</time></span><div class='quote '>Так же можно, с помощью каких-то ухищрений за O(n) попробовать построить по просто отсортированному списку.</div></div><br>
Зачем там ухищрения? Просто строишь рекурсивно, вызывая функцию построения для левой и правой половины массива.]]></description>
        <author>OpenGL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850602</guid>
        <pubDate>Mon, 09 Aug 2021 15:25:33 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850602</link>
        <description><![CDATA[KIA: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850593'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Akina &#064; <time class="tag-quote__quoted-time" datetime="2021-08-09T13:35:54+00:00">09.08.21, 13:35</time></span><div class='quote '><br>
Ну вообще-то если дерево помещается, то массив всяко дело поместится. </div></div><br>
Не правильно понимаете, в массиве элементы идут последовательно, память может быть фрагментирована. Выделить непрерывный кусок памяти и частями - это совершенно разные вещи. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-08-09T15:36:14+00:00">09.08.21, 15:36</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850574'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2021-08-09T11:41:46+00:00">09.08.21, 11:41</time></span><div class='quote '>а насчет балансировки, ИМХО, это одна из сложнейших операций в древовидных структурах, основанная на поворотах, производится при вставке</div></div><br>
Да, именно дерево поиска. По упорядоченному списку не проблема в 1 проход построить дерево, достаточно положить элементы в порядке рекурсивного обхода будущего дерева. А как отсортировать таким образом список, это уже другой ворос. Так же можно, с помощью каких-то ухищрений за O(n) попробовать построить по просто отсортированному списку.<br>
<br>
Но целевой вопрос, именно о построении дерева из неупорядоченного списка, то есть. это не 10 вставок + 10 балансировок, а сам процесс вставки приводит к построению сбалансированного дерева. Понятно, что в самом примитивном случае надо постоянно пробегать весь список в поисках медианы и просто включать её в новое дерево, но это сверхнеоптимально и не подходит.]]></description>
        <author>KIA</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850593</guid>
        <pubDate>Mon, 09 Aug 2021 13:35:54 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850593</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850547'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-08T22:27:55+00:00">08.08.21, 22:27</time></span><div class='quote '>Загонять список в масив, тоже нельзя (предполагается, что нет непрерывного пространства для выделения массива).</div></div><br>
Ну вообще-то если дерево помещается, то массив всяко дело поместится. А если не хватит на то и другое одновременно - так ведь можно сразу сделать болванку под дерево без связей, отсортировать как массив, и потом бинарно расставить связи.<br>
<br>
Или я что-то не так понимаю?]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850574</guid>
        <pubDate>Mon, 09 Aug 2021 11:41:46 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850574</link>
        <description><![CDATA[FasterHarder: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850547'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-08T22:27:55+00:00">08.08.21, 22:27</time></span><div class='quote '>абсолютно </div></div><br>
в теории это вроде как &quot;идеально&quot; ---&#62; идеально сбалансированное дерево<br>
<br>
из постановки непонятно, речь про дерево ПОИСКА или просто дерево, ну, например, двоичные деревья бывают поиска и НЕ поиска. По дефалту считаем, что ты имел в виду поисковое деревце&#33;<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=422332&view=findpost&p=3850547'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>KIA &#064; <time class="tag-quote__quoted-time" datetime="2021-08-08T22:27:55+00:00">08.08.21, 22:27</time></span><div class='quote '>Количество элементов известно.</div></div><br>
следовательно, можно как минимум знать, сколько будет уровней у будущего сбалансированного дерева, но от этого не легче, ну, да)<br>
<br>
а насчет балансировки, ИМХО, это одна из сложнейших операций в древовидных структурах, основанная на поворотах, производится при вставке и может <strong class='tag-b'>РЕКУРСИВНО </strong>затрагивать/перестраивать множество узлов дерева<br>
<br>
ты хочешь за 1 прогон по списку (ЛОС) построить сбалансированное дерево, не знаю, без балансировки дерева после включения узла ничего не знаю, ну то есть по классике работать<br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">зы: балансировка, ИМХО, тяжелая операция и раскуривать ее нужно достаточно долго. Рекурсия вносит тяжесть жесткую в понимании. Ну, кому-то она кажется простой, мне таковой не кажется, лол</div></div>]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850547</guid>
        <pubDate>Sun, 08 Aug 2021 22:27:55 +0000</pubDate>
        <title>Сбалансированное двоичное дерево из несортированного списка.</title>
        <link>https://forum.sources.ru/index.php?showtopic=422332&amp;view=findpost&amp;p=3850547</link>
        <description><![CDATA[KIA: Есть какие-нибудь алгоритмы для быстрого построения абсолютно (всякие разновидности АВЛ используют свои понятия баланса) сбалансированного двоичного дерева из несортированного списка?<br>Количество элементов известно.<br>Не предлагать сначала отсортировать список, так как дерево по сути и является сортировкой элементов. Загонять список в масив, тоже нельзя (предполагается, что нет непрерывного пространства для выделения массива).<br><br>Если таких алгоритмов не существует, давайте начнём с сортировки в определённой последовательности и построении в 1 проход.]]></description>
        <author>KIA</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	