Please note that the recommended version of Scilab is 2026.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 — display, functions and operators overloading capabilities
Литература
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 >> |