Matlab sortrows是否始终保留排序组中的原始顺序?

Matlab sortrows是否始终保留排序组中的原始顺序?,matlab,sorting,Matlab,Sorting,MATLAB的sortrows函数似乎使每个排序组内的排序保持不变。有人知道这是否属实,因为我找不到任何支持这一点的文档 使用MATLAB提供的示例: 并应用sortrows(A[1]) 在原始数据中,德国在第一列之后是卢卡斯,安德烈亚斯,茱莉亚在第二列从上到下阅读。这在最终结果中得到了保留 这种行为有保证吗?是的,这就是1的意思。如果要输入[1,2],它将对第二行进行排序。是 Matlab使用的是稳定的(如果他们不采用某些特定于数据的优化)。在大多数情况下,我假设Matlab使用稳定排序,但如

MATLAB的
sortrows
函数似乎使每个排序组内的排序保持不变。有人知道这是否属实,因为我找不到任何支持这一点的文档

使用MATLAB提供的示例:

并应用
sortrows(A[1])

在原始数据中,
德国
在第一列之后是
卢卡斯
安德烈亚斯
茱莉亚
在第二列从上到下阅读。这在最终结果中得到了保留


这种行为有保证吗?

是的,这就是
1
的意思。如果要输入
[1,2]
,它将对第二行进行排序。

Matlab使用的是稳定的(如果他们不采用某些特定于数据的优化)。在大多数情况下,我假设Matlab使用稳定排序,但如果不查看源代码,就无法确定

最好的办法是联系Matlab技术支持,以确保他们的排序算法确实是稳定的,如果他们有任何计划在未来改变这一点

sortrows
使用内部排序。您可以阅读源代码:

>> edit sortrows

编辑:更多

我不知道sortrows是否稳定,文档没有说明(或者我在文档中找不到)


但是,您可以通过添加一个带有排序整数的列(例如
1:N
)来增强稳定性,并将此列作为第二个值进行排序(因此,如果新列是第三个值,请按
[1,3]
进行排序)。

谢谢,您有任何参考资料可以支持此操作吗?例如,这种行为在SQL中是不能保证的。谢谢,这正是我想要的答案。你的建议要求Matlab支持是一个很好的建议。你也可以在你的答案中添加这个链接:好的建议。已添加链接。快速排序不稳定。
ans = 

    'Germany'    'Lukas'  
    'Germany'    'Andreas'
    'Germany'    'Julia'  
    'USA'        'William'
    'USA'        'Andrew' 
    'USA'        'Olivia' 
>> edit sortrows