Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
gsort
сортировка по алгоритму быстрой сортировки
Последовательность вызова
[B [,k]]=gsort(A) [B [,k]]=gsort(A,option) [B [,k]]=gsort(A,option,direction)
Аргументы
- A
вещественный, целочисленный или строковый вектор/матрица, либо разрежённый вектор.
- option
символьная строка. Она задаёт тип требуемой сортировки:
'r' : сортируется каждый столбец
A
'c': сортируется каждая строка
A
'g': сортируются все элементы
A
. Это значение по умолчанию.'lr': лексикографическая сортировка строк
A
'lc': лексикографическая сортировка столбцов
A
- direction
символьная строка. Она задаёт направление сортировки:
'i'
устанавливает порядок возрастания, а'd'
устанавливает порядок убывания (по умолчанию).- B
массив того же типа и размеров, что и
A
.- k
вещественный массив целочисленных значений тех же размеров, что и
A
. Содержит исходные индексы.
Описание
gsort
использует алгоритм "быстрой сортировки" для различных типов данных.
B=gsort(A,'g')
,B=gsort(A,'g','d')
иB=gsort(A)
сортируют элементы массиваA
, который рассматривается какA(:)
в порядке убывания.B=gsort(A,'g','i')
сортирует элементы массиваA
в порядке возрастания.B=gsort(A,'lr')
сортирует строкиA
в лексическом порядке убывания.B
получается перестановкой строк матрицыA
таким образом, чтобы строкиB
удовлетворялиB(i,:)>=B(j,:)
, еслиi<j
.B=gsort(A,'lr','i')
работает аналогично для лексического порядка возрастания.B=gsort(A,'lc')
сортирует столбцыA
в лексическом порядке убывания.B
получается перестановкой столбцов матрицыA
таким образом, чтобы столбцыB
удовлетворялиB(:,i)>=B(:,j)
, еслиi<j
.B=gsort(A,'lc','i')
работает аналогично для лексического порядка возрастания.
Если требуется, то второй возвращаемый аргумент k
содержит индексы отсортированных значений в A
. Если [B,k]=gsort(A,'g')
, то B==A(k)
.
Алгоритм сохраняет относительный порядок записей с одинаковыми значениями.
Когда v
является комплексным, элементы сортируются по амплитуде, т. е. abs(v
). Только 'g'
в качестве второго аргумента работает с комплексными значениями.
С комплексными числами gsort
может быть перегружена
смотрите макрос: SCI/modules/elementary_functions/macros/%_gsort.sci
Можно делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).
Если v
содержит элементы %nan
или
%inf
, то gsort
помещает их в начало с аргументом 'd'
, либо в конец с аргументом 'i'
.
Примеры
alr=[1,2,2; 1,2,1; 1,1,2; 1,1,1]; [alr1,k]=gsort(alr,'lr','i') [alr1,k]=gsort(alr,'lc','i') v=int32(alr) gsort(v) gsort(v,'lr','i') gsort(v,'lc','i') v=['Scilab' '2.6' 'Scilab' '2.7' 'xcos' '2.7' 'Scilab' '3.1' 'xcos' '3.1' 'xcos' '4.0' 'Scilab' '4.0'] gsort(v,'lr','i') gsort(v,'lc','i')
Смотрите также
- find — find indices of boolean vector or matrix true elements
- overloading — возможности перегрузки отображения, функций и операторов
Литература
Quick sort algorithm from Bentley & McIlroy's "Engineering a Sort Function". Software---Practice and Experience, 23(11):1249-1265
История
Версия | Описание |
5.4.0 | Эта функция позволяет делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора). |
Report an issue | ||
<< dsearch | Поиск и сортировка | lex_sort >> |