вид

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

Синтаксис

B = sort(A)
B = sort(A,dim)
B = sort(___,direction)
B = sort(___,Name,Value)
[B,I] = 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 array
    "Jones"     "Adams" 
    "Petrov"    "Burns" 
    "Santos"    "Morita"

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

B = sort(A,2)
B = 3x2 string array
    "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 array
   2012-12-22
   2063-04-05
   1992-01-12

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

I = 3×1

     3
     1
     2

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

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

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

Создайте 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 повреждает связь на основе их мнимых частей.

A = [1+2i 3+i i 0 -i];
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 переупорядочивает элементы массива, но не переупорядочивает символы в строках.

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

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

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

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

свернуть все

Сортированный массив, возвращенный как вектор, матрица или многомерный массив. B одного размера и тип как 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.

Больше о

свернуть все

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

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

Советы

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

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

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

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