exponenta event banner

вид

Сортировка элементов массива

Описание

пример

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, этот порядок означает, что буквы верхнего регистра приходят перед строчными буквами. Цифры и некоторые знаки препинания также приходят перед буквами.

Совет

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

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

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

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