<< find Поиск и сортировка members >>

Справка Scilab >> Основные функции > Поиск и сортировка > gsort

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 использует алгоритм "быстрой сортировки" для различных типов данных.

Если требуется, то второй возвращаемый аргумент 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 Эта функция позволяет делать перегрузку для типов, которые не управляются (отличные от матриц/векторов вещественных, целочисленных или символьных значений, либо разрежённого вектора).

Report an issue
<< find Поиск и сортировка members >>