2015-09-01 54 views
2

Matlab的sortrows函数似乎在每个排序组中保持不变。有谁知道这是否是真实的,因为我找不到任何支持这一点的文档。Matlab分拣程序是否始终保留排序组中的原始排序?

使用Matlab的用于sortrows提供例如:

A = { '德国' '卢卡斯'; '美国''威廉'; '美国''安德鲁'; ... '德国''安德烈亚斯'; '美国''奥利维亚'; “德国”“朱”}

A = 

    'Germany' 'Lukas' 
    'USA'  'William' 
    'USA'  'Andrew' 
    'Germany' 'Andreas' 
    'USA'  'Olivia' 
    'Germany' 'Julia' 

并施加sortrows(A, [1])

ans = 

    'Germany' 'Lukas' 
    'Germany' 'Andreas' 
    'Germany' 'Julia' 
    'USA'  'William' 
    'USA'  'Andrew' 
    'USA'  'Olivia' 

看到,在原来的数据,德国在第一​​列中后面的Lukas,安德烈亚斯,朱莉娅从第二列读取从上到下。这将保留在最终结果中。

这种行为是保证?

回答

2

是的。

MATLAB的使用quick sort这是稳定的(如果他们不使用某些特定数据优化)。在大多数情况下,我会假设Matlab使用稳定的排序,但不能确定没有查看源代码。

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

sortrows使用内部排序。你可以阅读源:

>> edit sortrows 

编辑:更多info

+0

谢谢,这正是我正在寻找的答案。你的建议要求Matlab支持是一个很好的建议。 – Alex

+1

你能不能也请这个链接添加到您的答案:http://au.mathworks.com/company/newsletters/articles/an-adventure-of-sortsbehind-the-scenes-of-a-matlab-upgrade.html – Alex

+1

好建议。链接添加。 – bendervader

0

是的,那是什么1手段。如果您要输入[1,2],它会对第二行进行排序。

+0

谢谢你,你有一个可以支持这一行动的任何引用?例如,这种行为在SQL中不能保证。 – Alex