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')

Размещение отсутствующих значений (NaNNAT, <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