排序
对数组元素排序
描述
例子
按升序排序向量
按升序排序矩阵行
创建一个矩阵,并按升序对每一行进行排序。
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
数组
创建一个数组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字符串"红" "橙" "黄" "绿" "蓝" "紫"
排序3-D阵列
创建一个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)
的列中的元素排序一个
.分类(2)
对行的元素进行排序一个
.
排序
返回一个
如果昏暗的
大于ndims (A)
.昏暗的
不支持以下情况金宝app一个
是单元格数组,也就是说,排序
仅沿大小不等于1的第一个数组维度操作。
数据类型:双
|单
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
方向
- - - - - -排序方向
“提升”
(默认)|“下”
排序方向,指定为“提升”
或“下”
.方向
不支持以下情况金宝app一个
是单元格数组,也就是说,排序
只能按升序排序。
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:sort(“MissingPlacement”,“最后”)
MissingPlacement
- - - - - -缺失值的放置
“汽车”
(默认)|“第一”
|“最后一次”
放置缺失值(南
,NaT
,<定义>
,失踪
)指定为逗号分隔的对,由“MissingPlacement”
和以下其中之一:
“汽车”
-升序时,缺失元素放在最后,降序时放在前面。“第一”
-缺失的元素放在前面。“最后一次”
-缺失的元素放在最后。
ComparisonMethod
- - - - - -元素比较法
“汽车”
(默认)|“真实”的
|“abs”
元素比较方法,指定为由逗号分隔的对组成“ComparisonMethod”
和以下其中之一:
“汽车”
——排序一个
通过真正的(一个)
当一个
是真的吗abs ()
当一个
是复杂的。“真实”的
——排序一个
通过真正的(一个)
当一个
是真实的还是复杂的。如果一个
有相等实部的元素,那么使用图像放大(A)
打破束缚。“abs”
——排序一个
通过abs ()
当一个
是真实的还是复杂的。如果一个
有等大小的元素,然后用角(A)
在区间(-π,π)中打破束缚。
输出参数
B
-排序数组
向量|矩阵|多维数组
排序数组,返回为一个向量,矩阵,或多维数组。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
函数为矩阵或表输入的多列进行子排序提供了额外的灵活性。的
排序
函数和关系运算符对复数使用不同的顺序。有关更多信息,请参见关系操作.
扩展功能
高大的数组
使用行数超过内存容量的数组进行计算。
C/ c++代码生成
使用MATLAB®Coder™生成C和c++代码。
使用注意事项和限制:
第一个输入参数不能是单元格数组。
如果
一个
是全零虚部的复数,那么MATLAB可以转换一个
来真正的(一个)
在调用之前sort ()
.在这种情况下,MATLAB排序一个
通过真正的(一个)
,但生成的代码进行排序一个
通过abs ()
.要使生成的代码匹配MATLAB,请使用排序(真实(A))
或sort(“ComparisonMethod”,“真正的”)
.看到虚部为零的复杂数据的代码生成(MATLAB编码器).如果你提供
昏暗的
,那么它一定是常数。有关可变大小输入的限制,请参见工具箱函数代码生成的可变大小限制(MATLAB编码器).
线程环境
使用MATLAB®在后台运行代码backgroundPool
或使用并行计算工具箱™加速代码ThreadPool
.
这个函数完全支持基于线程的环境。金宝app有关更多信息,请参见在线程环境中运行MATLAB函数.
GPU数组
通过使用并行计算工具箱™在图形处理单元(GPU)上运行来加速代码。
本功能完全支持GPU阵列。金宝app有关更多信息,请参见在图形处理器上运行MATLAB函数(并行计算工具箱).
分布式阵列
使用并行计算工具箱™跨集群的组合内存对大型数组进行分区。
该函数完全支持分布式数组。金宝app有关更多信息,请参见运行MATLAB函数与分布式阵列(并行计算工具箱).
版本历史
R2006a之前介绍
打开举例
Vous possédez une版本modifiée de cet举例。Souhaitez-vous ouvrir cet示例avec vos修改?
对MATLAB
Vous avez cliqué sur un lien qui对应à cette命令MATLAB:
倒exécuter la command, saisissez-la dans la fenêtre de command de MATLAB。Les navigateurs web ne 金宝appsupport pas Les command MATLAB。
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。