1 <?xml version="1.0" encoding="UTF-8"?>
3 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
4 * Copyright (C) 2008 - INRIA
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
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">
15 <refname>gsort</refname>
16 <refpurpose>сортировка по алгоритму быстрой сортировки</refpurpose>
19 <title>Последовательность вызова</title>
20 <synopsis>[B [,k]]=gsort(A)
21 [B [,k]]=gsort(A,option)
22 [B [,k]]=gsort(A,option,direction)
26 <title>Аргументы</title>
31 <para>вещественный, целочисленный или строковый вектор/матрица, либо разрежённый вектор.
38 <para>символьная строка. Она задаёт тип требуемой сортировки:
43 'r' : сортируется каждый столбец <literal>A</literal>
48 'c': сортируется каждая строка <literal>A</literal>
53 'g': сортируются все элементы <literal>A</literal>. Это значение по умолчанию.
57 <para>'lr': лексикографическая сортировка строк
62 <para>'lc': лексикографическая сортировка столбцов
70 <term>direction</term>
72 <para>символьная строка. Она задаёт направление сортировки:
73 <literal>'i'</literal> устанавливает порядок возрастания, а
74 <literal>'d'</literal> устанавливает порядок убывания (по умолчанию).
82 массив того же типа и размеров, что и <literal>A</literal>.
89 <para>вещественный массив целочисленных значений тех же размеров, что и
90 <literal>A</literal>. Содержит исходные индексы.
97 <title>Описание</title>
99 <literal>gsort</literal> использует алгоритм "быстрой сортировки" для различных типов данных.
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> в порядке убывания.
110 <literal>B=gsort(A,'g','i')</literal> сортирует элементы массива <literal>A</literal> в порядке возрастания.
115 <literal>B=gsort(A,'lr')</literal> сортирует строки
116 <literal>A</literal> в лексическом порядке убывания. <literal>B</literal>
117 получается перестановкой строк матрицы <literal>A</literal> таким образом, чтобы строки <literal>B</literal> удовлетворяли <literal>B(i,:)>=B(j,:)</literal>, если <literal>i<j</literal>.
120 <literal>B=gsort(A,'lr','i')</literal> работает аналогично для лексического порядка возрастания.
125 <literal>B=gsort(A,'lc')</literal> сортирует столбцы <literal>A</literal> в лексическом порядке убывания. <literal>B</literal> получается перестановкой столбцов матрицы <literal>A</literal> таким образом, чтобы столбцы <literal>B</literal> удовлетворяли <literal>B(:,i)>=B(:,j)</literal>, если
126 <literal>i<j</literal>.
129 <literal>B=gsort(A,'lc','i')</literal> работает аналогично для лексического порядка возрастания.
134 Если требуется, то второй возвращаемый аргумент <literal>k</literal> содержит индексы отсортированных значений в <literal>A</literal>. Если <literal>[B,k]=gsort(A,'g')</literal>, то <literal>B==A(k)</literal>.
135 <emphasis role="bold">
136 Алгоритм сохраняет относительный порядок записей с одинаковыми значениями.
140 Когда <literal>v</literal> является комплексным, элементы сортируются по амплитуде, т. е. abs(<literal>v</literal>). Только <literal>'g'</literal> в качестве второго аргумента работает с комплексными значениями.
143 С комплексными числами <literal>gsort</literal> может быть перегружена
145 <para>смотрите макрос:
146 SCI/modules/elementary_functions/macros/%_gsort.sci
149 Можно делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).
152 Если <literal>v</literal> содержит элементы <literal>%nan</literal> или
153 <literal>%inf</literal>, то <literal>gsort</literal> помещает их в начало с аргументом <literal>'d'</literal>, либо в конец с аргументом <literal>'i'</literal>.
157 <title>Примеры</title>
158 <programlisting role="example">
163 [alr1,k]=gsort(alr,'lr','i')
164 [alr1,k]=gsort(alr,'lc','i')
184 <refsection role="see also">
185 <title>Смотрите также</title>
186 <simplelist type="inline">
188 <link linkend="find">find</link>
191 <simplelist type="inline">
193 <link linkend="overloading">overloading</link>
198 <title>Литература</title>
199 <para>Quick sort algorithm from Bentley & McIlroy's "Engineering a
200 Sort Function". Software---Practice and Experience,
205 <title>История</title>
208 <revnumber>5.4.0</revnumber>
210 Эта функция позволяет делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).