主要内容

排序

对数组元素排序

描述

例子

B=排序(一个对元素进行排序一个按升序排列。

  • 如果一个是向量吗sort ()对向量元素进行排序。

  • 如果一个是矩阵吗sort ()处理的列一个作为向量,对每一列进行排序。

  • 如果一个那么是多维数组吗sort ()沿着大小不等于1的第一个数组维进行操作,将元素视为向量。

例子

B=排序(一个昏暗的的排序元素一个沿着维度昏暗的.例如,如果一个是矩阵吗分类(2)对每行的元素进行排序。

例子

B=排序(___方向返回排序后的元素一个指定的顺序方向使用任何前面的语法。“提升”表示升序(默认值)和“下”降序。

例子

B=排序(___名称,值指定用于排序的其他参数。例如,sort(“ComparisonMethod”,“abs”)对元素进行排序一个的大小。

例子

B= sort(___还返回任何前面语法的索引向量的集合。尺寸和一个并描述了元素的排列一个B沿着排序的维数。例如,如果一个是向量吗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;10 0 -9]
一个=3×33 6 5 7 -2 4 10 0 -9
B = sort(A,2)
B =3×33 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]
一个=4×410 -12 4 8 6 -9 8 0 2 3 11 -2 11 9 3
B = sort(A,“下”
B =4×410 3 11 8 6 1 9 3 2 -9 8 0 1 -12 4 -2

从R2017a开始,您可以使用双引号创建字符串数组,并使用排序函数。根据Unicode®字典顺序对字符串数组的每一列中的字符串进行排序。

A = [“桑托斯”“燃烧”...“琼斯”“森田”...“彼得罗夫”“亚当斯”];B = sort(A)
B =3 x2字符串琼斯,亚当斯,彼得罗夫,伯恩斯,桑托斯,森田

对每行中的字符串进行排序。

B = sort(A,2)
B =3 x2字符串伯恩斯,桑托斯,琼斯,森田,亚当斯,彼得罗夫

创建一个数组datetime值,并按升序排序,即从最早的日历日期到最近的日历日期。

Ds = {“2012-12-22”“2063-04-05”“1992-01-12”};A = datetime(ds,“格式”“yyyy-MM-dd”
一个=3 x1 datetime2012-12-22 2063-04-05 1992-01-12
[B,I] =排序(A)
B =3 x1 datetime1992-01-12 2012-12-22 2063-04-05
我=3×13 1 2

B列出排序的日期和包含的对应索引一个

使用索引数组直接从原始数组中访问已排序的元素

(我)
ans =3 x1 datetime1992-01-12 2012-12-22 2063-04-05

创建两个行向量,其中包含相应元素中的相关数据。

X = [3 6 4 2 1 5];Y = [“黄色”“紫色”“绿色”“橙色”“红色”“蓝色”];

首先对向量进行排序X,然后对向量进行排序Y顺序与X

[Xsorted,I] = sort(X)
Xsorted =1×61 2 3 4 5 6
我=1×65 4 1 3 6 2
排序= Y(I)
Ysorted =1 x6字符串"红" "橙" "黄" "绿" "蓝" "紫"

创建一个2 × 2 × 2的数组,并沿着第三维以升序对其元素排序。

A(:,:,1) = [2 3;1 6];A(:,:,2) = [-1 9;0 12];一个
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

使用(:)的列表示一个的所有元素进行排序一个

B = sort(A(:))
B =8×1-1 0 12 3 6 9 12

按实部对复向量的元素进行排序。默认情况下,排序函数根据大小对复杂值进行排序,并使用相位角打破联系。指定的值“ComparisonMethod”作为“真实”的来代替对复杂值的实部进行排序。对于实部相等的元素,排序根据他们想象的部分打破平局。

A = [1+ 2i3 + 1i1i 0 -1i];B = sort(A,“ComparisonMethod”“真实”的
B =1×5复杂0.0000 - 1.0000i 0.0000 + 0.0000i 0.0000 + 1.0000i 1.0000 + 2.0000i 3.0000 + 1.0000i

输入参数

全部折叠

输入数组,指定为矢量、矩阵或多维数组。

  • 如果一个是标量吗sort ()返回一个

  • 如果一个是复杂的,那么默认情况下,排序按大小对元素排序。如果有多个元素具有相等的大小,则这些元素在区间(−π, π]上按相位角排序。

  • 如果一个那么,单元格数组是字符向量还是字符串数组sort ()根据UTF-16字符编码方案的代码顺序对元素进行排序。排序是区分大小写的。有关对字符和字符串数组排序的详细信息,请参见字符和字符串数组的排序顺序

  • 如果一个是字符串数组吗排序重新排序数组的元素,但不重新排序字符串中的字符。

  • 如果一个是一个分类数组,那么排序顺序是基于类别顺序返回由类别(A)

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|细胞|分类|datetime|持续时间
复数支持:金宝app是的

操作的维度,指定为正整数标量。如果未指定值,则默认为第一个大小不等于1的数组维数。

  • 考虑一个矩阵一个类(1)的列中的元素排序一个

    排序(A,1)列操作

  • 分类(2)对行的元素进行排序一个

    排序(A,2)逐行操作

排序返回一个如果昏暗的大于ndims (A)昏暗的不支持以下情况金宝app一个是单元格数组,也就是说,排序仅沿大小不等于1的第一个数组维度操作。

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

排序方向,指定为“提升”“下”方向不支持以下情况金宝app一个是单元格数组,也就是说,排序只能按升序排序。

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。

在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字在报价。

例子:sort(“MissingPlacement”,“最后”)

放置缺失值(NaT<定义>,失踪)指定为逗号分隔的对,由“MissingPlacement”和以下其中之一:

  • “汽车”-升序时,缺失元素放在最后,降序时放在前面。

  • “第一”-缺失的元素放在前面。

  • “最后一次”-缺失的元素放在最后。

元素比较方法,指定为由逗号分隔的对组成“ComparisonMethod”和以下其中之一:

  • “汽车”——排序一个通过真正的(一个)一个是真的吗abs ()一个是复杂的。

  • “真实”的——排序一个通过真正的(一个)一个是真实的还是复杂的。如果一个有相等实部的元素,那么使用图像放大(A)打破束缚。

  • “abs”——排序一个通过abs ()一个是真实的还是复杂的。如果一个有等大小的元素,然后用角(A)在区间(-π,π)中打破束缚。

输出参数

全部折叠

排序数组,返回为一个向量,矩阵,或多维数组。B尺寸和型号是一样的吗一个

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64|逻辑|字符|字符串|细胞|分类|datetime|持续时间

排序索引,作为向量、矩阵或多维数组返回。尺寸和一个.索引向量的方向与排序在操作。例如,如果一个是2 × 3矩阵吗[B,I] =排序(A,2)的每一行中的元素进行排序一个.输出是1 × 3行索引向量的集合描述的每一行的重排一个

排序函数使用稳定的排序算法。因此,当输入包含重复值时,排序索引将保留输入的原始顺序,而不管排序方向如何。例如,如果A = [1 2 1 2],然后[Ba,Ia] = sort(A,'ascend')返回排序索引Ia = [1 3 2 4]而且[Bd,Id] = sort(A,' descent ')返回排序索引Id = [2 4 1 3]

更多关于

全部折叠

字符和字符串数组的排序顺序

MATLAB®将字符存储为Unicode®使用UTF-16字符编码方案。字符和字符串数组根据UTF-16码位顺序排序。对于同样是ASCII字符的字符,这个顺序意味着大写字母在小写字母之前。数字和一些标点符号也出现在字母之前。

提示

  • sortrows函数为矩阵或表输入的多列进行子排序提供了额外的灵活性。

  • 排序函数和关系运算符对复数使用不同的顺序。有关更多信息,请参见关系操作

扩展功能

版本历史

R2006a之前介绍