d8f9d034539ff10b786df5102eb09db9120a24d2
[scilab.git] / scilab / modules / elementary_functions / help / ru_RU / searchandsort / gsort.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4  * Copyright (C) 2008 - INRIA
5  * 
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at    
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  -->
13 <refentry xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:svg="http://www.w3.org/2000/svg" xmlns:ns5="http://www.w3.org/1999/xhtml" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:db="http://docbook.org/ns/docbook" version="5.0-subset Scilab" xml:id="gsort" xml:lang="ru">
14     <refnamediv>
15         <refname>gsort</refname>
16         <refpurpose>сортировка по алгоритму быстрой сортировки</refpurpose>
17     </refnamediv>
18     <refsynopsisdiv>
19         <title>Последовательность вызова</title>
20         <synopsis>[B [,k]]=gsort(A)
21             [B [,k]]=gsort(A,option)
22             [B [,k]]=gsort(A,option,direction)
23         </synopsis>
24     </refsynopsisdiv>
25     <refsection>
26         <title>Аргументы</title>
27         <variablelist>
28             <varlistentry>
29                 <term>A</term>
30                 <listitem>
31                     <para>вещественный, целочисленный или строковый вектор.матрица, либо разрежённый вектор.
32                     </para>
33                 </listitem>
34             </varlistentry>
35             <varlistentry>
36                 <term>option</term>
37                 <listitem>
38                     <para>символьная строка. Она задаёт тип требуемой сортировки:
39                     </para>
40                     <itemizedlist>
41                         <listitem>
42                             <para>
43                                 'r' : сортируется каждый столбец <literal>A</literal>
44                             </para>
45                         </listitem>
46                         <listitem>
47                             <para>
48                                 'c': сортируется каждая строка <literal>A</literal>
49                             </para>
50                         </listitem>
51                         <listitem>
52                             <para>
53                                 'g': сортируются все элементы <literal>A</literal>. Это значение по умолчанию.
54                             </para>
55                         </listitem>
56                         <listitem>
57                             <para>'lr': лексикографическая сортировка строк 
58                                 <literal>A</literal>
59                             </para>
60                         </listitem>
61                         <listitem>
62                             <para>'lc': лексикографическая сортировка столбцов 
63                                 <literal>A</literal>
64                             </para>
65                         </listitem>
66                     </itemizedlist>
67                 </listitem>
68             </varlistentry>
69             <varlistentry>
70                 <term>direction</term>
71                 <listitem>
72                     <para>символьная строка. Она задаёт направление сортировки:
73                         <literal>'i'</literal> устанавливает порядок возрастания, а 
74                         <literal>'d'</literal> устанавливает порядок убывания (по умолчанию).
75                     </para>
76                 </listitem>
77             </varlistentry>
78             <varlistentry>
79                 <term>B</term>
80                 <listitem>
81                     <para>
82                         массив того же типа и размеров, что и <literal>A</literal>.
83                     </para>
84                 </listitem>
85             </varlistentry>
86             <varlistentry>
87                 <term>k</term>
88                 <listitem>
89                     <para>вещественный массив целочисленных значений тех же размеров, что и 
90                         <literal>A</literal>. Содержит исходные индексы.
91                     </para>
92                 </listitem>
93             </varlistentry>
94         </variablelist>
95     </refsection>
96     <refsection>
97         <title>Описание</title>
98         <para>
99             <literal>gsort</literal> использует алгоритм "быстрой сортировки" для различных типов данных.
100         </para>
101         <itemizedlist>
102             <listitem>
103                 <para>
104                     <literal>B=gsort(A,'g')</literal>,
105                     <literal>B=gsort(A,'g','d')</literal> и
106                     <literal>B=gsort(A)</literal> сортируют элементы массива
107                     <literal>A</literal>, который рассматривается как <literal>A(:)</literal> в порядке убывания.
108                 </para>
109                 <para>
110                     <literal>B=gsort(A,'g','i')</literal> сортирует элементы массива <literal>A</literal> в порядке возрастания.
111                 </para>
112             </listitem>
113             <listitem>
114                 <para>
115                     <literal>B=gsort(A,'lr')</literal> сортирует строки
116                     <literal>A</literal> в лексическом порядке убывания. <literal>B</literal>
117                     получается перестановкой строк матрицы <literal>A</literal> таким образом, чтобы строки <literal>B</literal> удовлетворяли <literal>B(i,:)&gt;=B(j,:)</literal>, если <literal>i&lt;j</literal>.
118                 </para>
119                 <para>
120                     <literal>B=gsort(A,'lr','i')</literal> работает аналогично для лексического порядка возрастания.
121                 </para>
122             </listitem>
123             <listitem>
124                 <para>
125                     <literal>B=gsort(A,'lc')</literal> сортирует столбцы <literal>A</literal> в лексическом порядке убывания. <literal>B</literal> получается перестановкой столбцов матрицы <literal>A</literal> таким образом, чтобы столбцы           <literal>B</literal> удовлетворяли <literal>B(:,i)&gt;=B(:,j)</literal>, если
126                     <literal>i&lt;j</literal>.
127                 </para>
128                 <para>
129                     <literal>B=gsort(A,'lc','i')</literal> работает аналогично для лексического порядка возрастания.
130                 </para>
131             </listitem>
132         </itemizedlist>
133         <para>
134             Если требуется, то второй возвращаемый аргумент <literal>k</literal> содержит индексы отсортированных значений в <literal>A</literal>. Если <literal>[B,k]=gsort(A,'g')</literal>, то  <literal>B==A(k)</literal>.
135             <emphasis role="bold">
136                 Алгоритм сохраняет относительный порядок записей с одинаковыми значениями. 
137             </emphasis>
138         </para>
139         <para>
140             Когда <literal>v</literal> является комплексным, элементы сортируются по амплитуде, т. е. abs(<literal>v</literal>). Только <literal>'g'</literal> в качестве второго аргумента работает с комплексными значениями.
141         </para>
142         <para>
143             С комплексными числами <literal>gsort</literal> может быть перегружена
144         </para>
145         <para>смотрите макрос:
146             SCI/modules/elementary_functions/macros/%_gsort.sci
147         </para>
148         <para>
149             Можно делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).
150         </para>
151         <para>
152             Если <literal>v</literal> содержит элементы <literal>%nan</literal> или
153             <literal>%inf</literal>, то <literal>gsort</literal> помещает их в начало с аргументом <literal>'d'</literal>, либо в конец с аргументом <literal>'i'</literal>.
154         </para>
155     </refsection>
156     <refsection>
157         <title>Примеры</title>
158         <programlisting role="example"> 
159             alr=[1,2,2;
160             1,2,1;
161             1,1,2;
162             1,1,1];
163             [alr1,k]=gsort(alr,'lr','i')
164             [alr1,k]=gsort(alr,'lc','i')
165             
166             v=int32(alr)
167             
168             gsort(v)
169             gsort(v,'lr','i')
170             gsort(v,'lc','i')
171             
172             v=['Scilab' '2.6'
173             'Scilab' '2.7'
174             'xcos' '2.7'
175             'Scilab' '3.1'
176             'xcos' '3.1'
177             'xcos' '4.0'
178             'Scilab' '4.0']
179             
180             gsort(v,'lr','i')
181             gsort(v,'lc','i')
182         </programlisting>
183     </refsection>
184     <refsection role="see also">
185         <title>Смотрите также</title>
186         <simplelist type="inline">
187             <member>
188                 <link linkend="find">find</link>
189             </member>
190         </simplelist>
191         <simplelist type="inline">
192             <member>
193                 <link linkend="overloading">overloading</link>
194             </member>
195         </simplelist>
196     </refsection>
197     <refsection>
198         <title>Литература</title>
199         <para>Quick sort algorithm from Bentley &amp; McIlroy's "Engineering a
200             Sort Function". Software---Practice and Experience,
201             23(11):1249-1265
202         </para>
203     </refsection>
204     <refsection>
205         <title>История</title>
206         <revhistory>
207             <revision>
208                 <revnumber>5.4.0</revnumber>
209                 <revremark> 
210                     Эта функция позволяет делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).
211                 </revremark>
212             </revision>
213         </revhistory>
214     </refsection>
215 </refentry>