<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
					xmlns:content="http://purl.org/rss/1.0/modules/content/"
					xmlns:wfw="http://wellformedweb.org/CommentAPI/"
					xmlns:atom="http://www.w3.org/2005/Atom"
				  >
<channel>
<atom:link rel="self"  type="application/rss+xml"  href="http://rulinux.net/rss_from_sect_4_subsect_10_thread_42613"  />
<title>rulinux.net - Форум - Talks - [спв][у кого короче]Сортировки тред</title>
<link>http://rulinux.net/</link>
<description><![CDATA[Портал о GNU/Linux и не только]]></description>
<image><title>rulinux.net - Форум - Talks - [спв][у кого короче]Сортировки тред</title>
<link>http://rulinux.net/</link>
<url>http://rulinux.net/rss_icon.png</url>
</image>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216895</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216895</guid>
<pubDate>Wed, 10 Aug 2016 09:56:56 +0300</pubDate>
<description><![CDATA[<p>Я думаю это сделано специально для того, чтобы отвлечь нас от скачивания базы данных паспартов на 100 млн. записей.</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216894</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216894</guid>
<pubDate>Wed, 10 Aug 2016 09:34:32 +0300</pubDate>
<description><![CDATA[<p>Каких еще серий? Это точный эквивалент однострочника из ОП который генерирует цифры в столбик. Только вместо 39 минут делает это за 17 секунд</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216893</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216893</guid>
<pubDate>Wed, 10 Aug 2016 09:00:07 +0300</pubDate>
<description><![CDATA[<p>&gt; atoi
<br><br>
И как эта функция переваривает номера серий?</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216892</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216892</guid>
<pubDate>Wed, 10 Aug 2016 06:58:37 +0300</pubDate>
<description><![CDATA[<p><i>>time tr -cd '[:digit:]' &lt; /dev/urandom | fold -w10 | head -n 100000000 &gt; /home/user/list.csv</i><br><i>> real 39m40.707s </i><br><br><br>ОМГ. За 39 минут можно на С написать пару раз<br><br><fieldset><legend>c</legend><div class="highlight c"><br />
<br />
<span class="co2">#include &lt;stdio.h&gt;</span><br />
<span class="co2">#include &lt;stdlib.h&gt;</span><br />
<br />
<span class="kw4">int</span><br />
main<span class="br0">&#40;</span><span class="kw4">int</span> argc<span class="sy0">,</span> <span class="kw4">char</span> <span class="sy0">*</span>argv<span class="br0">&#91;</span><span class="br0">&#93;</span><span class="br0">&#41;</span><br />
<span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw4">int</span> lines<span class="sy0">,</span> digits<span class="sy0">,</span> i<span class="sy0">,</span> j<span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>argc <span class="sy0">&lt;</span> <span class="nu0">3</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fprintf<span class="br0">&#40;</span>stderr<span class="sy0">,</span> <span class="st0">&quot;Usage: %s LINES DIGITS<span class="es1">\n</span>&quot;</span><span class="sy0">,</span> argv<span class="br0">&#91;</span>0<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">1</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; lines <span class="sy0">=</span> atoi<span class="br0">&#40;</span>argv<span class="br0">&#91;</span>1<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; digits <span class="sy0">=</span> atoi<span class="br0">&#40;</span>argv<span class="br0">&#91;</span>2<span class="br0">&#93;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>i<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> i<span class="sy0">&lt;</span>lines<span class="sy0">;</span> i<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span>j<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> j<span class="sy0">&lt;</span>digits<span class="sy0">;</span> j<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; putchar<span class="br0">&#40;</span>rand<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="sy0">%</span> <span class="nu0">10</span> <span class="sy0">+</span> <span class="st0">'0'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; putchar<span class="br0">&#40;</span><span class="st0">'<span class="es1">\n</span>'</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span><span class="sy0">;</span><br />
<span class="br0">&#125;</span><br />
&nbsp;</div></fieldset><br><br><fieldset><legend>bash</legend><div class="highlight bash"><br />
$ <span class="kw1">time</span> .<span class="sy0">/</span>a.out <span class="nu0">100000000</span> <span class="nu0">10</span> <span class="sy0">&gt;</span> list.csv <br />
<br />
real&nbsp; &nbsp; 0m17.014s<br />
user&nbsp; &nbsp; 0m16.324s<br />
sys &nbsp; &nbsp; 0m0.700s<br />
&nbsp;</div></fieldset></p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216887</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216887</guid>
<pubDate>Tue, 09 Aug 2016 16:00:00 +0300</pubDate>
<description><![CDATA[<p>Создание, сортировка по-быстрее, но тоже не мгновенная.<br><br><fieldset><legend>text</legend><div class="highlight text"><br />
real &nbsp; &nbsp;26m20.908s<br />
user &nbsp; &nbsp;20m56.852s<br />
sys &nbsp; &nbsp; 0m24.503s<br />
&nbsp;</div></fieldset></p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216886</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216886</guid>
<pubDate>Tue, 09 Aug 2016 15:42:11 +0300</pubDate>
<description><![CDATA[<p>Это как раз не адекватно. А вдруг попадётся такой сорт, что он по всему файлу пробегать будет на каждую строчку, для экономии памяти, скажем? И обязательно альтернативный сорт должен уметь все те же функции, что и оригинальный.
<br><br>
А то затычку-то на каждый конкретный случай слабать несложно, мне кажется сожно было бы подтянуть эти паспорта вообще в похапешный массив, он же вроде sparse, так что 10-значный индекс не должен ничего плохого сделать. А потом пройти по массиву в порядке возрастания - вот тебе и сорт.</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216885</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216885</guid>
<pubDate>Tue, 09 Aug 2016 15:10:34 +0300</pubDate>
<description><![CDATA[<p>Для адекватного сравнения  тогда надо и sort с рам диска хотя бы делать.<br><br>Из tmpfs  который по идее в памяти:<br /> real	3m26.938s<br /> user	10m49.187s<br /> sys	0m2.187s<br /> Те на пару минут лучше.<br><br><br /> А с оптимизацией &quot;-n&quot; <br /> real	1m41.007s <br /> user	4m39.450s <br /> sys	0m3.057s <br /><br><br> Думаю это будет сопоставимо  с qulite по скрости,  только сильно проще в реализации.</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216884</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216884</guid>
<pubDate>Tue, 09 Aug 2016 15:02:10 +0300</pubDate>
<description><![CDATA[<p>&gt; базу данных старых паспортов на гигабайт, но дабы не качать: 
<br>
<br>
Я так думаю, там не просто колонка цифр, но и ещё какие-то данные, поэтому надо разбирать входную строку
<br>
<br>
&gt; гигового файла
<br>
<br>
Т.е. набор данных заведомо помещается в памяти современного мобильного телефона.
<br>
<br>
Я думаю тут надо использовать башевую команду `sqlite3`  - создать ею табличку с двумя полями 'id' типа интеджер и 'str' - типа текст или ещё какого символьного. Импортировать данные с применением встроенной команды <a href="https://sqlite.org/cli.html#section_8">.import</a> и селектить оттуда всё чего надо в каком хошь порядке. 
</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216881</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216881</guid>
<pubDate>Tue, 09 Aug 2016 14:39:44 +0300</pubDate>
<description><![CDATA[<p>На таких обьемах  блох ловить,  не выразительно получаются отрывы.<br><br>Но &quot;Умная сортировка&quot;   сравнялась с результатом sort.<br><br>real    0m0.016s user    0m0.014s sys     0m0.002s<br><br>Это что за алгоритм  был ? </p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216880</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216880</guid>
<pubDate>Tue, 09 Aug 2016 14:34:14 +0300</pubDate>
<description><![CDATA[<p>на 10000 элементах, ибо на гиге завешивает комп напрочь , коды сортировок <a href="http://mech.math.msu.su/~shvetz/54/inf/perl-problems/chSorting_sReadyProgram.xhtml">http://mech.math.msu.su/~shvetz/54/inf/perl-problems/chSorting_sReadyProgram.xhtml</a><br><br><fieldset><legend>text</legend><div class="highlight text"><br />
10000 элементов<br />
<br />
[vilfred@localhost perl]$ time sort 1list.csv &gt; list_sort.csv<br />
<br />
real&nbsp; &nbsp; 0m0.017s<br />
user&nbsp; &nbsp; 0m0.013s<br />
sys &nbsp; &nbsp; 0m0.003s<br />
[vilfred@localhost perl]$ <br />
<br />
Пузырьковая сортировка(простая версия)<br />
<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m23.103s<br />
user&nbsp; &nbsp; 0m23.016s<br />
sys &nbsp; &nbsp; 0m0.050s<br />
<br />
Пузырьковая сортировка(Улучшенная версия)<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m28.227s<br />
user&nbsp; &nbsp; 0m28.002s<br />
sys &nbsp; &nbsp; 0m0.224s<br />
[vilfred@localhost perl]$ <br />
<br />
Шейкерная сортировка<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m25.788s<br />
user&nbsp; &nbsp; 0m25.784s<br />
sys &nbsp; &nbsp; 0m0.003s<br />
[vilfred@localhost perl]$ <br />
<br />
Сортировка вставками<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m18.874s<br />
user&nbsp; &nbsp; 0m18.790s<br />
sys &nbsp; &nbsp; 0m0.044s<br />
[vilfred@localhost perl]$ <br />
<br />
Сортировка выбором<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m5.304s<br />
user&nbsp; &nbsp; 0m5.298s<br />
sys &nbsp; &nbsp; 0m0.005s<br />
[vilfred@localhost perl]$ <br />
<br />
Древесная сортировка<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m0.117s<br />
user&nbsp; &nbsp; 0m0.114s<br />
sys &nbsp; &nbsp; 0m0.003s<br />
[vilfred@localhost perl]$ <br />
<br />
Быстрая сортировка<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m0.058s<br />
user&nbsp; &nbsp; 0m0.054s<br />
sys &nbsp; &nbsp; 0m0.003s<br />
[vilfred@localhost perl]$ <br />
<br />
Умная сортировка<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m0.016s<br />
user&nbsp; &nbsp; 0m0.014s<br />
sys &nbsp; &nbsp; 0m0.002s<br />
[vilfred@localhost perl]$<br />
<br />
Перемешивание<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m0.045s<br />
user&nbsp; &nbsp; 0m0.039s<br />
sys &nbsp; &nbsp; 0m0.005s<br />
[vilfred@localhost perl]$ <br />
<br />
Алгоритм Фишера — Йетса — Дурстенфельда<br />
<br />
[vilfred@localhost perl]$ time perl x.pl<br />
<br />
real&nbsp; &nbsp; 0m0.026s<br />
user&nbsp; &nbsp; 0m0.023s<br />
sys &nbsp; &nbsp; 0m0.002s<br />
[vilfred@localhost perl]$ <br />
<br />
&nbsp;</div></fieldset></p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216879</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216879</guid>
<pubDate>Tue, 09 Aug 2016 14:30:16 +0300</pubDate>
<description><![CDATA[<p>Ну уж сказал А  выкладывай и Б.   Все результаты  интересны.</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216878</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216878</guid>
<pubDate>Tue, 09 Aug 2016 14:29:34 +0300</pubDate>
<description><![CDATA[<p>Это сортировка  или  создание файла ?<br><br>Если создание файла,  то я предупреждал, что метод крайне не эффективный.<br><br> А если сортировка  то  ты её видимо  на телефоне делал :)</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216877</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216877</guid>
<pubDate>Tue, 09 Aug 2016 14:27:09 +0300</pubDate>
<description><![CDATA[<p><fieldset><legend>text</legend><div class="highlight text"><br />
real &nbsp; &nbsp;157m56.176s<br />
user &nbsp; &nbsp;1m27.981s<br />
sys &nbsp; &nbsp; 140m2.310s<br />
&nbsp;</div></fieldset><br><br>Ты издеваешься? Зачем я коптил атмосферу?</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216876</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216876</guid>
<pubDate>Tue, 09 Aug 2016 13:55:56 +0300</pubDate>
<description><![CDATA[<p>даже выкладывать стыдно результаты =) на сях надо эти алгоритмы преписывать...</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216875</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216875</guid>
<pubDate>Tue, 09 Aug 2016 11:57:48 +0300</pubDate>
<description><![CDATA[<p>ща заценим, тут <a href="http://mech.math.msu.su/~shvetz/54/inf/perl-problems/chSorting_sIdeas.xhtml">http://mech.math.msu.su/~shvetz/54/inf/perl-problems/chSorting_sIdeas.xhtml</a> 10 алгоритмов разных сортировки</p>]]></description>
</item>
<item>
<title>Re:[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216874</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216874</guid>
<pubDate>Tue, 09 Aug 2016 11:47:48 +0300</pubDate>
<description><![CDATA[<p>Ушёл создавать базу. Буду через 5 минут.</p>]]></description>
</item>
<item>
<title>[спв][у кого короче]Сортировки тред</title>
<link>https://rulinux.net/message.php?newsid=42613&amp;page=1#216873</link>
<guid>https://rulinux.net/message.php?newsid=42613&amp;page=1#216873</guid>
<pubDate>Tue, 09 Aug 2016 11:16:23 +0300</pubDate>
<description><![CDATA[<p>В обсуждениях новости опеннета <a href="http://www.opennet.ru/opennews/art.shtml?num=44932">http://www.opennet.ru/opennews/art.shtml?num=44932</a><br><br>Возник  вопрос  о  адекватности  &quot;старых&quot; утилит типа сорт, и много большей  эффективности &quot;новых&quot; (java, go, etc) ЯП  и &quot;современных&quot; реализаций   старых алгоритмов  (с чего бы). <br /> Там сортировали базу данных  старых паспортов  на гигабайт, но дабы не качать: <br /> time tr -cd '[:digit:]' &lt; /dev/urandom | fold -w10 | head -n 100000000 &gt; /home/user/list.csv  <br /> real	39m40.707s <br /> user	0m55.913s <br /> sys	39m7.850s <br /> <br /> и сортируем  без  -n,  как на опеннете time sort list.csv  &gt; list_sort.csv <br /> real	4m51.489s <br /> user	12m23.947s <br /> sys	0m2.593s <br /> <br /> Далее отталкиваясь от результата  обычного утилитного сорта  на вашей  машине  предложите  более эффективную реализацию  на любимом ЯП.<br><br><br /> p.s. результаты  получены на ноуте  с обычным HDD <br /> p.s.s. Предложите более эффективную реализацию  создания  гигового файла с 10 значными числами  в баше.</p>]]></description>
</item>
</channel>
</rss>