сортировка по алгоритму быстрой сортировки
[B [,k]]=gsort(A) [B [,k]]=gsort(A,option) [B [,k]]=gsort(A,option,direction)
вещественный, целочисленный или строковый вектор/матрица, либо разрежённый вектор.
символьная строка. Она задаёт тип требуемой сортировки:
'r' : сортируется каждый столбец A
'c': сортируется каждая строка A
'g': сортируются все элементы A. Это значение по умолчанию.
'lr': лексикографическая сортировка строк
A
'lc': лексикографическая сортировка столбцов
A
символьная строка. Она задаёт направление сортировки:
'i' устанавливает порядок возрастания, а
'd' устанавливает порядок убывания (по умолчанию).
массив того же типа и размеров, что и A.
вещественный массив целочисленных значений тех же размеров, что и
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') | ![]() | ![]() |
Quick sort algorithm from Bentley & McIlroy's "Engineering a Sort Function". Software---Practice and Experience, 23(11):1249-1265
| Версия | Описание |
| 5.4.0 | Эта функция позволяет делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора). |