<?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=421471&amp;view=findpost&amp;p=3847843</guid>
        <pubDate>Mon, 31 May 2021 16:33:35 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847843</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421471&view=findpost&p=3847841'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>scrambrella &#064; <time class="tag-quote__quoted-time" datetime="2021-05-31T15:37:59+03:00">31.05.21, 12:37</time></span><div class='quote '>Пузырёк оптимальным не бывает.</div></div><br>
Да сколько угодно... надо быстренько прогнать программку в три оператора, готовых сортирных библиотек под рукой нет - что может быть проще, чем за минуту накидать пузырёк?]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847841</guid>
        <pubDate>Mon, 31 May 2021 12:37:59 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847841</link>
        <description><![CDATA[scrambrella: Пузырёк оптимальным не бывает. Разве что на очень маленьких массивах.]]></description>
        <author>scrambrella</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847806</guid>
        <pubDate>Sat, 29 May 2021 18:26:54 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847806</link>
        <description><![CDATA[AVA12: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Любой алгоритм сортировки можно сделать устойчивым, если использовать составной ключ (элемент, индекс_в_исходном_массиве). В данном случае если в исходном массиве A[B[i]] = A[B[j]], то сравниваем элементы индексного массива B[i] и B[j], которые различны по определению.</div></div><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>в итоге победил сортировкой обмена (пузырьком, даже оптимальным вроде пузырьком), т к выбором нереал, а на вставках тоже устойчивость сбивалась</div></div><br>
Похоже, мне на пенсию пора. Я уже нихрена не понимаю в современной культуре программирования.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847798</guid>
        <pubDate>Fri, 28 May 2021 22:55:56 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847798</link>
        <description><![CDATA[FasterHarder: в итоге победил сортировкой обмена (пузырьком, даже оптимальным вроде пузырьком), т к выбором нереал, а на вставках тоже устойчивость сбивалась<br>
сейчас все работает как часы:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;&nbsp; &nbsp;for i := 2 to N do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for j := N downto i do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(data[index[j]] &#60; data[index[j - 1]]) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;swap := index[j];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index[j] := index[j - 1];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index[j - 1] := swap;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
<strong class='tag-b'><em class='tag-i'>Еще применение этой индексной сортировки:</em></strong> когда надо, чтобы данные оставались в первоначальном состоянии, но при этом вывести их надо в отсортированном виде для каких-либо нужд временно/одномоментно...<br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">До чего же <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red">неприятная сортировка вставками</span></strong>&#33; Вроде считается, что способы: пузырек, выбором и вставками равны по силе и по простоте, но, ИМХО, насколько же неудобно кодить вставками)...Стараюсь избегать ее до последнего&#33;</div></div>]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847651</guid>
        <pubDate>Sun, 23 May 2021 20:42:02 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847651</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>Akina</strong>, полностью согласен с твоими рассуждениями.<br>
<br>
вроде я разобрался и окончательно понял со всей этой индексной сортировкой<br>
1. такой прием хорош, когда, например, данные СЛОЖНЫЕ/составные, т е много полей, вложенных массивов, объектов классов и пр. В этом случае менять местами элементы оч.затратно (а если еще и deep copy идет, то совсем может долго исполняться). Не, другое дело, когда в массиве УКАЗАТЕЛИ на данные, тогда можно сортировать через указатели без всяких индексов. И, когда данные сложные, то там и более точные критерии сортировки образуются. Тут вроде все понятно)..надеюсь, что я правильно понял)<br>
<br>
2. а насчет того, что порядок элементов с одинаковым значением иногда меняется - проблема в сортировке выбором&#33; Ведь при этой сортировке меняется местами 1ый элемент из неотсортированной части, с минимаксным элементом и в итоге 1ый элемент &quot;улетает&quot; в хвост(на место минимаксного). А если это был дубликатный элемент, то он уходит за своего близнеца (дубликата) и впоследствии его близнец обрабатывается РАНЬШЕ, хотя на старте стоял позже...вроде в этом проблема) Необходимо поменять тип сортировки и отказаться от выбором, а, например, использовать ВСТАВКАМИ, т к при вставках происходит сдвиг и взаимное расположение элементов НЕ меняется<br>
<br>
Всем спс, особенно <strong class='tag-b'>Akina</strong>, особенно за пост №2 - точнейшее попадание в проблему)<br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">Скрытый текст</div><div class="body">p.s. что-то не припомню у Макконела описание этого приема (индексный массив) в &quot;Совершенном коде&quot;, хотя может не обратил внимание...он должен был об этом где-то написать все равно)</div></div>]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847648</guid>
        <pubDate>Sun, 23 May 2021 18:51:47 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847648</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421471&view=findpost&p=3847646'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2021-05-23T18:07:07+00:00">23.05.21, 18:07</time></span><div class='quote '>Как с этим бороться - ума не приложу.</div></div><br>
Сперва найди ответ на вопрос &quot;зачем с этим бороться, и надо ли бороться вообще&quot;.<br>
<br>
Построение индекса - он ведь не для того, чтобы построить индекс. А для того, чтобы быстро найти в массиве нужный элемент. И, если элемент идентифицируется только значением, то глубоко сиренево, какой из них найден, второй или девятый. найден = этого достаточно. А как только появляется разница - так появляется дополнительное условие при сортировке, и уже не только значение принимается во внимание.<br>
<br>
Т.е. на мой взгляд в прикладном смысле устойчивость не имеет никакого значения вообще, равно как и сохранение порядка. Зато важно правильное, корректное и полное формулирование критерия сортировки (сравнения элементов при выполнении сортировки).<br>
<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-05-23T18:52:37+00:00">23.05.21, 18:52</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421471&view=findpost&p=3847645'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>AVA12 &#064; <time class="tag-quote__quoted-time" datetime="2021-05-23T17:47:50+00:00">23.05.21, 17:47</time></span><div class='quote '>Устойчивость - не проблема. Любой алгоритм сортировки можно сделать устойчивым, если использовать составной ключ (элемент, индекс_в_исходном_массиве).</div></div><br>
А это по большому счёту изменение выражения сортировки - то есть изменение исходного задания. Что может быть и не очень корректным.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847646</guid>
        <pubDate>Sun, 23 May 2021 18:07:07 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847646</link>
        <description><![CDATA[FasterHarder: <strong class='tag-b'>Akina</strong>, вот знаешь, а на мой взгляд ты <strong class='tag-b'><span class="tag-color tag-color-named" data-value="red" style="color: red"><em class='tag-i'>фантастично точно описал проблему</em></span></strong>&#33;<br>
именно, когда есть одинаковые элементы сортировка сбивается из-за неустойчивости. Тестировал на др.данных, не как в этом примере<br>
<br>
Причем, если в сравнении заменить &quot;&lt;&quot; на &quot;&lt;=&quot;, то вообще получается совсем другой ответ (неправильный)...<br>
За базовую сортировку взял сортировку выбором минимального. В итоге еле-еле закодировал...<br>
<br>
вот фрагмент кода сортировки:<br>
   <div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;for i := 1 to N do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;index[i] := i;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp;for i := 1 to (N - 1) do</div><div class="code_line">&nbsp;&nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;imin := index[i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;for j := (i + 1) to N do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;if(data[index[j]] &#60; data[imin]) then &nbsp;// если поменять на &#60;=, то получается белиберда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;imin := j;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//writeln(&#39;i = &#39;, i, &#39;; &nbsp; imin = &#39;, imin);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//write(imin:6);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//if(index[imin] &#60;&#62; index[i]) then</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;begin</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;swap := index[imin];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index[imin] := index[i];</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;index[i] := swap;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;end;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//for j := 1 to N do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;// &nbsp; &nbsp;write(index[j]:4);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//readln;</div><div class="code_line">&nbsp;&nbsp; &nbsp;end;</div></ol></div></div></div></div><br>
<br>
я потратил более часа, чтобы это написать), но так и не уверен, а правильно ли здесь все, лол. В принципе, да, в 99% все ок, но, вот когда есть одинаковые элементы (как ты точно заметил), то индексы идут не по порядку (точнее, иногда они идут по порядку, иногда - нет). Как с этим бороться - ума не приложу.<br>
<br>
Вообще оказалось сложнее здесь все, чем казалось изначально...]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847645</guid>
        <pubDate>Sun, 23 May 2021 17:47:50 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847645</link>
        <description><![CDATA[AVA12: Устойчивость - не проблема. Любой алгоритм сортировки можно сделать устойчивым, если использовать составной ключ (элемент, индекс_в_исходном_массиве). В данном случае если в исходном массиве A[B[i]] = A[B[j]], то сравниваем элементы индексного массива B[i] и B[j], которые различны по определению.]]></description>
        <author>AVA12</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847643</guid>
        <pubDate>Sun, 23 May 2021 15:03:24 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847643</link>
        <description><![CDATA[Akina: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421471&view=findpost&p=3847614'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>FasterHarder &#064; <time class="tag-quote__quoted-time" datetime="2021-05-22T10:14:03+00:00">22.05.21, 10:14</time></span><div class='quote '>а каким способом сортировки надо производить упорядочивание-то? Любым?</div></div><br>
Нет. У тебя не определено поведение при наличии в исходном массиве равных элементов. Для примера в этом посте 3 9 2 4 6 7 5 10 1 8 также будет являться корректным ответом без дополнительных уточнений. А если будет дополнено, что для равных элементов индексы для них должны располагаться в определённом порядке (скажем, по возрастанию), то на выбор метода сортировки начинают влиять соображения устойчивости.]]></description>
        <author>Akina</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847614</guid>
        <pubDate>Sat, 22 May 2021 10:14:03 +0000</pubDate>
        <title>Индексная сортировка, индексный массив</title>
        <link>https://forum.sources.ru/index.php?showtopic=421471&amp;view=findpost&amp;p=3847614</link>
        <description><![CDATA[FasterHarder: Всем хай&#33; Без лишних прелюдий переходим к делу.<br>
<br>
Условие такое:<br>
<strong class='tag-b'><span class="tag-color tag-color-named" data-value="blue" style="color: blue"><span class='tag-size' data-value='14' style='font-size:14pt;'>Построить индексный массив, упорядочивающий данные по возрастанию (индексация в массиве начинается с 1): <br>
25 3 2 9 14 10 13 40 3 16</span></span></strong><br>
----------------------<br>
Привлекла мое внимание эта фраза &quot;индексный массив&quot;&#33;<br>
Немного погуглив примерно понял, что это такое. Правда во всех примерах писали про составные данные (аля структура/класс), но это ладно...<br>
<br>
Правильно ли я понимаю, что надо вот, что сделать:<br>
1. На вход программе подаются целые числа ---&#62; сохраняем их в одномерном массиве.<br>
2. Создаем новый массив такого же размера. Элементы этого массива равны значениям своих индексов<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">indexVector[i] := i;</div></ol></div></div></div></div><br>
3. Сортируем массив indexVector, отталкиваясь от значения элементов массива из п.1. Т е упорядочиваем индексы в массиве indexVector, не меняя взаимного расположения стартовых чисел.<br>
4. На выходе распечатываем содержимое indexVector. Для примера в этом посте: 3 2 9 4 6 7 5 10 1 8. И вот это и будет являться ИНДЕКСНЫМ МАССИВОМ, да?<br>
<br>
Допустим, если все описал выше корректно, то остается вопрос: <span class="tag-color tag-color-named" data-value="red" style="color: red"><strong class='tag-b'>а каким способом сортировки надо производить упорядочивание-то?</strong></span> Любым? (как правило от сортируемых данных зависит, конечно). Ну, допустим, Шелла...<br>
2. Этот алгоритм называют индексной сортировкой?<br>
<br>
спс. за внимание]]></description>
        <author>FasterHarder</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	