<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; AHK: Тонкости сортировки.]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=7430&amp;type=atom" />
	<updated>2012-11-22T01:02:39Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=7430</id>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65990#p65990" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-11-22T01:02:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65990#p65990</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=65944#p65944" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Malcev]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26930</uri>
			</author>
			<updated>2012-11-21T19:16:31Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=65944#p65944</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62488#p62488" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-07T16:17:37Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62488#p62488</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62483#p62483" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-07T15:50:42Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62483#p62483</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62482#p62482" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-07T15:08:59Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62482#p62482</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62481#p62481" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Rediska]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=27824</uri>
			</author>
			<updated>2012-08-07T14:57:35Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62481#p62481</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62475#p62475" />
			<content type="html"><![CDATA[<p>creature.ws, большое спасибо,&nbsp; разобрался и вижу, что всё удастся легко встроить в мой скрипт. <br /> Короткий эффективный код! <img src="//forum.script-coding.com/img/smilies/smile.png" width="15" height="15" /></p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2012-08-07T11:27:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62475#p62475</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62474#p62474" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-07T10:57:06Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62474#p62474</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62471#p62471" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2012-08-07T10:40:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62471#p62471</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62467#p62467" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2012-08-07T09:50:13Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62467#p62467</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62462#p62462" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-07T09:30:16Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62462#p62462</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62459#p62459" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2012-08-07T09:22:47Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62459#p62459</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62457#p62457" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Irbis пишет:</cite><blockquote><p>Единственое, что приходит на ум, раз не хочется самому писать функцию сортировки - слить все переменные в одну строку и отсортировать.</p></blockquote></div><p>Я не понял, а как тут сохраняется информация о номерах переменных? Как узнать, что строка находящаяся после сортировки на первом месте - это бывшая третья или та, что сейчас на четвёртом месте - это бывший номер два?</p>]]></content>
			<author>
				<name><![CDATA[Pokerist]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24990</uri>
			</author>
			<updated>2012-08-07T09:10:57Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62457#p62457</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62455#p62455" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[Александр_]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=24888</uri>
			</author>
			<updated>2012-08-07T09:01:39Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62455#p62455</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: AHK: Тонкости сортировки.]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=62452#p62452" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[creature.ws]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=26105</uri>
			</author>
			<updated>2012-08-07T08:30:34Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=62452#p62452</id>
		</entry>
</feed>
