sort

Сортировка массива

Описание

пример

B = sort(A) сортирует элементы A в порядке возрастания.

  • Если A является вектором, тогда sort(A) сортирует векторные элементы.

  • Если A является матрицей, тогда sort(A) обрабатывает столбцы A как векторы и сортировка каждого столбца.

  • Если A является многомерным массивом, затем sort(A) действует вдоль первого измерения массива, размер которого не равен 1, обрабатывая элементы как векторы.

пример

B = sort(A,dim) возвращает отсортированные элементы A вдоль размерной dim. Для примера, если A является матрицей, тогда sort(A,2) сортирует элементы каждой строки.

пример

B = sort(___,direction) возвращает отсортированные элементы A в порядке, заданном direction использование любого из предыдущих синтаксисов. 'ascend' указывает порядок возрастания (по умолчанию) и 'descend' указывает порядок убывания.

пример

B = sort(___,Name,Value) задает дополнительные параметры для сортировки. Для примера, sort(A,'ComparisonMethod','abs') сортирует элементы A по величине.

пример

[B,I] = sort(___) также возвращает набор индекса векторов для любого из предыдущих синтаксисов. I - тот же размер, что и A и описывает расположение элементов A в B вдоль отсортированной размерности. Для примера, если A является вектором, тогда B = A(I).

Примеры

свернуть все

Создайте вектор-строку и отсортируйте его элементы в порядке возрастания.

A = [9 0 -7 5 3 8 -10 4 2];
B = sort(A)
B = 1×9

   -10    -7     0     2     3     4     5     8     9

Создайте матрицу и отсортируйте каждую из ее строк в порядке возрастания.

A = [3 6 5; 7 -2 4; 1 0 -9]
A = 3×3

     3     6     5
     7    -2     4
     1     0    -9

B = sort(A,2)
B = 3×3

     3     5     6
    -2     4     7
    -9     0     1

Создайте матрицу и отсортируйте ее столбцы в порядке убывания.

A = [10 -12 4 8; 6 -9 8 0; 2 3 11 -2; 1 1 9 3]
A = 4×4

    10   -12     4     8
     6    -9     8     0
     2     3    11    -2
     1     1     9     3

B = sort(A,'descend')
B = 4×4

    10     3    11     8
     6     1     9     3
     2    -9     8     0
     1   -12     4    -2

Начиная с R2017a, можно создать строковые массивы с помощью двойных кавычек и отсортировать их с помощью sort функция. Сортировка строк в каждом столбце строковых массивов в соответствии с порядком словаря Unicode ®.

A = ["Santos","Burns"; ...
     "Jones","Morita"; ...
     "Petrov","Adams"];
B = sort(A)
B = 3x2 string
    "Jones"     "Adams" 
    "Petrov"    "Burns" 
    "Santos"    "Morita"

Отсортируйте строки в каждой строке.

B = sort(A,2)
B = 3x2 string
    "Burns"    "Santos"
    "Jones"    "Morita"
    "Adams"    "Petrov"

Создайте массив datetime значения и сортировка их в порядке возрастания, то есть с самой ранней до последней календарной даты.

ds = {'2012-12-22';'2063-04-05';'1992-01-12'};
A = datetime(ds,'Format','yyyy-MM-dd')
A = 3x1 datetime
   2012-12-22
   2063-04-05
   1992-01-12

[B,I] = sort(A)
B = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

I = 3×1

     3
     1
     2

B приводит список отсортированных дат и I содержит соответствующие индексы A.

Доступ к отсортированным элементам из исходного массива непосредственно с помощью массива индексов I.

A(I)
ans = 3x1 datetime
   1992-01-12
   2012-12-22
   2063-04-05

Создайте два векторов-строк, которые содержат связанные данные в соответствующих элементах.

X = [3 6 4 2 1 5];
Y = ["yellow" "purple" "green" "orange" "red" "blue"];

Сначала отсортируйте вектор X, затем отсортируйте вектор Y в том же порядке, что и X.

[Xsorted,I] = sort(X)
Xsorted = 1×6

     1     2     3     4     5     6

I = 1×6

     5     4     1     3     6     2

Ysorted = Y(I)
Ysorted = 1x6 string
    "red"    "orange"    "yellow"    "green"    "blue"    "purple"

Создайте массив 2 на 2 на 2 и сортируйте его элементы в порядке возрастания вдоль третьей размерности.

A(:,:,1) = [2 3; 1 6];
A(:,:,2) = [-1 9; 0 12];
A
A = 
A(:,:,1) =

     2     3
     1     6


A(:,:,2) =

    -1     9
     0    12

B = sort(A,3)
B = 
B(:,:,1) =

    -1     3
     0     6


B(:,:,2) =

     2     9
     1    12

Использование A(:), представление столбца A, чтобы отсортировать все элементы A.

B = sort(A(:))
B = 8×1

    -1
     0
     1
     2
     3
     6
     9
    12

Отсортируйте элементы массива комплексного вектора по их вещественным частям. По умолчанию в sort функция сортирует комплексные числа по их величине и разрывает связи с помощью углов фазы. Задайте значение 'ComparisonMethod' как 'real' чтобы вместо этого отсортировать комплексные числа по их вещественным частям. Для элементов с равными вещественными частями, sort ломает галстук на основе их мнимых частей.

A = [1+2i 3+1i 1i 0 -1i];
B = sort(A,'ComparisonMethod','real')
B = 1×5 complex

   0.0000 - 1.0000i   0.0000 + 0.0000i   0.0000 + 1.0000i   1.0000 + 2.0000i   3.0000 + 1.0000i

Входные параметры

свернуть все

Входной массив, заданный как векторный, матричный или многомерный массив.

  • Если A является скаляром, тогда sort(A) возвращает A.

  • Если A является комплексным, тогда по умолчанию sort сортирует элементы по величине. Если больше чем один элемент имеет одинаковую величину, то элементы сортируются по углу фазы на интервале (−

  • Если A - массив ячеек из векторов символов или строковые массивы, затем sort(A) сортирует элементы в соответствии с порядком кода для UTF-16 схемы кодирования символов. Сортировка учитывает регистр. Для получения дополнительной информации о сортировке символьных и строковых массивов смотрите Порядок сортировки для символьных и строковых массивов.

  • Если A являются строковые массивы, тогда sort переупорядочивает элементы массива, но не переупорядочивает символы в строках.

  • Если A является категориальным массивом, тогда порядок сортировки основан на порядке категорий, возвращаемом categories(A).

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration
Поддержка комплексного числа: Да

Размерность для работы, заданная как положительный целочисленный скаляр Если значение не задано, то по умолчанию это первое измерение массива, не равный 1.

  • Рассмотрим матрицу A. sort(A,1) сортирует элементы в столбцах A.

  • sort(A,2) сортирует элементы в строках A.

sort возвращает A если dim больше ndims(A). dim не поддерживается, когда A - массив ячеек, то есть sort действует только вдоль первого измерения массива, размер которого не равен 1.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

Направление сортировки, заданное как 'ascend' или 'descend'. direction не поддерживается, когда A - массив ячеек, то есть sort сортирует только в порядке возрастания.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: sort(A,'MissingPlacement','last')

Размещение отсутствующих значений (NaN, NaT, <undefined>, и missing) задается как разделенная разделенными запятой парами, состоящая из 'MissingPlacement' и одно из следующих:

  • 'auto' - Отсутствующие элементы помещаются последними в порядке возрастания и сначала в порядке убывания.

  • 'first' - Отсутствующие элементы помещаются первыми.

  • 'last' - Отсутствующие элементы помещаются последними.

Метод сравнения элементов, заданный как разделенная разделенными запятой парами, состоящая из 'ComparisonMethod' и одно из следующих:

  • 'auto' - Сортировка A по real(A) когда A реально, и сортировать по abs(A) когда A комплексная.

  • 'real' - Сортировка A по real(A) когда A является реальным или комплексным. Если A имеет элементы с равными вещественными частями, затем используйте imag(A) чтобы разорвать связи.

  • 'abs' - Сортировка A по abs(A) когда A является реальным или комплексным. Если A имеет элементы с равной величиной, затем используйте angle(A) в интервале (-

Выходные аргументы

свернуть все

Отсортированный массив, возвращенный как векторный, матричный или многомерный массив. B - тот же размер и тип, что и A.

Типы данных: double | single | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64 | logical | char | string | cell | categorical | datetime | duration

Сортировка индекса, возвращенная как вектор, матрица или многомерный массив. I - тот же размер, что и A. Векторы индекса ориентированы вдоль той же размерности, что и sort действует на. Для примера, если A - матрица 2 на 3, затем [B,I] = sort(A,2) сортирует элементы в каждой строке A. Область выхода I - набор векторов индекса строками 1 на 3, описывающих перестройку каждой строки A.

Когда вход содержит повторные значения, индекс сортировки сохраняет исходный порядок во входе, независимо от направления сортировки. Для примера, если A = [1 2 1 2], затем [Ba,Ia] = sort(A,'ascend') возвращает индекс сортировки Ia = [1 3 2 4] и [Bd,Id] = sort(A,'descend') возвращает индекс сортировки Id = [2 4 1 3].

Подробнее о

свернуть все

Порядок сортировки символов и Строковых массивов

MATLAB® сохраняет символы как Unicode® использование схемы UTF-16 символа кодирования. Символы и строковые массивы сортируются согласно UTF-16 кода порядку точек. Для символов, которые также являются символами ASCII, этот порядок означает, что заглавные буквы приходят перед строчными буквами. Цифры и некоторые пунктуации также приходят перед буквами.

Совет

  • The sortrows функция обеспечивает дополнительную гибкость для подсортирования по нескольким столбцам матрицы или входов таблицы.

  • The sort функция и реляционные операторы используют различные упорядоченные расположения для комплексных чисел. Для получения дополнительной информации см. раздел «Реляционные операции».

Расширенные возможности

.
Представлено до R2006a