<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; AHK: Тонкости сортировки.]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=7430</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7430&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «AHK: Тонкости сортировки.».]]></description>
		<lastBuildDate>Thu, 22 Nov 2012 01:02:39 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65990#p65990</link>
			<description><![CDATA[<p>В общем сделал так.<br /></p><div class="codebox"><pre><code>n = 5
i = 10
k = 1
loop 5
{
   a%k% := n
   list .= n &quot;a&quot; k &quot;`n&quot;
   b%k% := i
   msgbox, % b%k%
   k++
   n--
   i++
}
msgbox % list
Sort, list, N D`n
msgbox % list
list:=RegExReplace(list,&quot;\s*$&quot;,&quot;&quot;)
loop, parse, list, `n, `r
{
   var := (RegExReplace(A_LoopField, &quot;(.+)a&quot;, &quot;$2&quot;))
   k := var
   msgbox % b%k%
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Thu, 22 Nov 2012 01:02:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65990#p65990</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=65944#p65944</link>
			<description><![CDATA[<p>На основе кода от Irbis сделал скрипт, который сортирует переменные.<br />А вот как сделать, чтобы переменная b сортировалась в зависимости от переменной a?<br />То есть если a1 после сортировки стала a5, то как сделать, чтобы и b1 после сортировки стала b5?<br /></p><div class="codebox"><pre><code>n = 5
i = 10
k = 1
loop 5
{
   a%k% := n
   MsgBox, a%k% = %n%
   b%k% := i
   MsgBox, b%k% = %i%
   k++
   n--
   i++
}
loop 5
{
  mtmp := mtmp a%A_index% &quot;,&quot;
}
StringTrimRight, mtmp, mtmp, 1
Sort, mtmp, N D,
Loop, Parse, mtmp, `,
{
    MsgBox, a%A_Index% = %A_LoopField%
}</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Malcev)]]></author>
			<pubDate>Wed, 21 Nov 2012 19:16:31 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=65944#p65944</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62488#p62488</link>
			<description><![CDATA[<p>Кажется, разговор не в том направлении пошел.<br />В AHK v1 <strong>If (условие) действие</strong> в одну строку записать нельзя, <strong>&amp;&amp;</strong> выполняет функцию синтаксического подслащивания.<br />Действия после &amp;&amp; будут выполнены лишь если истинно условие до &amp;&amp; &gt; <a href="http://l.autohotkey.net/docs/Functions.htm#ShortCircuit">ссылка</a><br />Почитайте справку, там есть все ответы на базовые вопросы.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 07 Aug 2012 16:17:37 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62488#p62488</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62483#p62483</link>
			<description><![CDATA[<p>Ну с .= все ясно.<br />А вот какую функцию тут выполняют &amp;&amp; мне не ясно. Если это AND, то почему он не в If в &quot;равнозначном&quot; коде.</p><p>BTW в AHK_L удобней массивом пользоваться:</p><div class="codebox"><pre><code>Var := [9.9, 5, 3, 7, 1]

Loop % Var.MaxIndex()
{
	... Var[%a_index%] ...</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Tue, 07 Aug 2012 15:50:42 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62483#p62483</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62482#p62482</link>
			<description><![CDATA[<p><a href="http://l.autohotkey.net/docs/Variables.htm#Operators">Operators</a><br />var%A_Index% — имя переменной состоящее из строки &quot;var&quot; и содержимого переменной <a href="http://l.autohotkey.net/docs/commands/Loop.htm">A_Index</a>.</p>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 07 Aug 2012 15:08:59 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62482#p62482</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62481#p62481</link>
			<description><![CDATA[<div class="quotebox"><cite>creature.ws пишет:</cite><blockquote><p>В ahk_L работает, не ругается.</p><div class="codebox"><pre><code>(var%A_Index% = tmp) &amp;&amp;  varList .= &quot;var&quot; A_Index &quot;, &quot;</code></pre></div><p>равнозначно<br /></p><div class="codebox"><pre><code>If (var%A_Index% = tmp)
    varList .= &quot;var&quot; A_Index &quot;, &quot;</code></pre></div></blockquote></div><p>Что значит &quot;.=&quot; ?<br />Я что то не пойму ни первый вариант, ни второй. Как это код выглядит на C или Pascale?</p>]]></description>
			<author><![CDATA[null@example.com (Rediska)]]></author>
			<pubDate>Tue, 07 Aug 2012 14:57:35 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62481#p62481</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62475#p62475</link>
			<description><![CDATA[<p>creature.ws, большое спасибо,&nbsp; разобрался и вижу, что всё удастся легко встроить в мой скрипт. <br /> Короткий эффективный код! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Pokerist)]]></author>
			<pubDate>Tue, 07 Aug 2012 11:27:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62475#p62475</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62474#p62474</link>
			<description><![CDATA[<p>В ahk_L работает, не ругается.</p><div class="codebox"><pre><code>(var%A_Index% = tmp) &amp;&amp;  varList .= &quot;var&quot; A_Index &quot;, &quot;</code></pre></div><p>равнозначно<br /></p><div class="codebox"><pre><code>If (var%A_Index% = tmp)
    varList .= &quot;var&quot; A_Index &quot;, &quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 07 Aug 2012 10:57:06 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62474#p62474</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62471#p62471</link>
			<description><![CDATA[<div class="quotebox"><cite>creature.ws пишет:</cite><blockquote><div class="codebox"><pre><code>max := 11111
Loop % max  {
    Random, rand, 1, max
    var%A_Index% := rand
}

tmp := var1

Loop % max
    (var%A_Index% &gt; tmp) &amp;&amp; tmp := var%A_Index%
Loop % max
    (var%A_Index% = tmp) &amp;&amp;  varList .= &quot;var&quot; A_Index &quot;, &quot;


MsgBox % tmp &quot; — большее значение`n&quot; RTrim(varList, &quot;, &quot;) &quot; — переменные содержащие большее значение множества&quot;</code></pre></div></blockquote></div><p>Непривычный для меня формат записи.&nbsp; Даже не могу понять на что ругается AHK: <br /><strong>Missing &quot;)&quot;</strong> <br />для строки&nbsp; с третьим Loop.&nbsp; <img src="//forum.script-coding.com/img/smilies/roll.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Pokerist)]]></author>
			<pubDate>Tue, 07 Aug 2012 10:40:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62471#p62471</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62467#p62467</link>
			<description><![CDATA[<div class="quotebox"><cite>Pokerist пишет:</cite><blockquote><p>насколько я понимаю, это довольно медленный процес, а мне скорость достаточно важна. Может ещё есть какеие-то способы решения? Готов рассмотреть любые идеи. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p></blockquote></div><p>Что касается алгоритмической части- у Кнута всё расписано в пятой главе(3 том) &quot;искусства программирования&quot;, но это 400 страниц математических выкладок, т.е. не чтиво на ночь. Тут лучше положиться на стандартную функцию, какой бы плохой она не была. Если данных много, то нужно сортировать во время заполнения listbox&#039;а, т.е. добавили строку в список и сразу вычислили нужное значение и добавили в нужное место массива.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 07 Aug 2012 09:50:13 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62467#p62467</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62462#p62462</link>
			<description><![CDATA[<p>Выше пример обработки множества переменных <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p><p>По поводу сортировки массива:<br /></p><div class="codebox"><pre><code>SetBatchLines -1
Process, Priority,, High


Loop 4096 {
    Random, rand, 1, 12345
    str .= rand &quot;`n&quot;
}

str := RTrim(str, &quot;`n&quot;)

m := []
Loop, Parse, str,`n
    m[A_Index] := A_LoopField

t1 := A_TickCount
Sort, str, N
t1 := A_TickCount-t1

t2 := A_TickCount
Sort(m)
t2 := A_TickCount-t2

MsgBox % &quot;Default Sort: &quot; t1/1000 &quot;sec`nCustom Sort: &quot; t2/1000 &quot;sec&quot;

Sort(m)
{
    Loop % m.MaxIndex() {
        j := A_Index
        while (j &gt; 0 &amp;&amp; m[j-1] &gt; m[j])
            tmp := m[j], m[j] := m[j-1], m[j-1] := tmp, j-=1
    }
    return m
}



For i, k in m
    o .= k &quot;,&quot;
MsgBox % RTrim(o, &quot;,&quot;)</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 07 Aug 2012 09:30:16 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62462#p62462</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62459#p62459</link>
			<description><![CDATA[<div class="quotebox"><cite>Александр_ пишет:</cite><blockquote><p>ListBox может их сам сортировать в алфавитном порядке, см. соответствующий документации.</p></blockquote></div><p>Спасибо посмотрю, но скорее всего не подойдёт, поскольку сортирую не сами данные из ListBox. <br /> Я извлекаю только каждую третью строку, а в ней выбираю элементы номер 3 и 5,&nbsp; произвожу между ними манипуляции типа n3 ** / n5&nbsp; для каждой строки,&nbsp; и вот только тут мне нужно сортировать полученный результат.&nbsp; Но , так, чтобы знать, что максимальное значение получено с данными извлечёнными и строки номер N и т.д.</p><div class="quotebox"><blockquote><p>Ну а если именно в массиве искать, то только руками, см. <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC">пузырьковую сортировку</a>.</p></blockquote></div><p>Спасибо, почитал. Именно такое решение я имел ввиду под сравнением &quot;поштучно&quot;.&nbsp; Но, насколько я понимаю, это довольно медленный процес, а мне скорость достаточно важна. Может ещё есть какеие-то способы решения? Готов рассмотреть любые идеи. <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></description>
			<author><![CDATA[null@example.com (Pokerist)]]></author>
			<pubDate>Tue, 07 Aug 2012 09:22:47 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62459#p62459</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62457#p62457</link>
			<description><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Единственое, что приходит на ум, раз не хочется самому писать функцию сортировки - слить все переменные в одну строку и отсортировать.</p></blockquote></div><p>Я не понял, а как тут сохраняется информация о номерах переменных? Как узнать, что строка находящаяся после сортировки на первом месте - это бывшая третья или та, что сейчас на четвёртом месте - это бывший номер два?</p>]]></description>
			<author><![CDATA[null@example.com (Pokerist)]]></author>
			<pubDate>Tue, 07 Aug 2012 09:10:57 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62457#p62457</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62455#p62455</link>
			<description><![CDATA[<div class="quotebox"><cite>Pokerist пишет:</cite><blockquote><p>Обрабатываю информацию извлечённую из ListBox.&nbsp; Распределил необходимые фрагменты, в соответсвии с их номерами в списке, в динамические переменные типа var%номер%, чтобы было удобно к ним обращаться. </p><p>Теперь не могу понять как&nbsp; проще и быстре выяснить, каким номерам принадлжат максимальные значения переменных?</p><p>В &quot;Sort&quot; ничего похожего не нашёл. И вообще&nbsp; на русском про &quot;Sort&quot; ничего не нашёл. <img src="//forum.script-coding.com/img/smilies/sad.png" width="15" height="15" /><br />Подходящей математической функции тоже не обнаружил.<br />Не сравнивать же их поштучно?&nbsp; <img src="//forum.script-coding.com/img/smilies/mad.png" width="15" height="15" /></p></blockquote></div><p>ListBox может их сам сортировать в алфавитном порядке, см. соответствующий документации. Ну а если именно в массиве искать, то только руками, см. <a href="http://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D1%83%D0%B7%D1%8B%D1%80%D1%8C%D0%BA%D0%BE%D0%BC">пузырьковую сортировку</a>.</p>]]></description>
			<author><![CDATA[null@example.com (Александр_)]]></author>
			<pubDate>Tue, 07 Aug 2012 09:01:39 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62455#p62455</guid>
		</item>
		<item>
			<title><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=62452#p62452</link>
			<description><![CDATA[<div class="codebox"><pre><code>max := 11111
Loop % max  {
    Random, rand, 1, max
    var%A_Index% := rand
}

tmp := var1

Loop % max
    (var%A_Index% &gt; tmp) &amp;&amp; tmp := var%A_Index%
Loop % max
    (var%A_Index% = tmp) &amp;&amp;  varList .= &quot;var&quot; A_Index &quot;, &quot;


MsgBox % tmp &quot; — большее значение`n&quot; RTrim(varList, &quot;, &quot;) &quot; — переменные содержащие большее значение множества&quot;</code></pre></div>]]></description>
			<author><![CDATA[null@example.com (creature.ws)]]></author>
			<pubDate>Tue, 07 Aug 2012 08:30:34 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=62452#p62452</guid>
		</item>
	</channel>
</rss>
