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

时间:2015-09-01 03:06:37

标签: matlab sorting

Matlab的sortrows函数似乎在每个排序组中保持不变。有谁知道这是否真的如此,因为我找不到任何支持此文件的文件。

使用Matlab提供的sortrows示例:

A = {'德国' '卢卡斯&#39 ;; '美国' '威廉&#39 ;; '美国' '安德鲁&#39 ;; ... '德国' '安德烈亚斯&#39 ;; '美国' '奥利维亚&#39 ;; '德国' '朱莉娅'}

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' 
在原始数据中看到,德国在第一​​列中依次是卢卡斯,安德烈亚斯,朱莉娅在第二栏上下阅读。这在最终结果中保留。

这种行为能得到保证吗?

3 个答案:

答案 0 :(得分:2)

Matlab使用稳定的quick sort(如果他们不使用某些特定于数据的优化)。在大多数情况下,我认为Matlab使用稳定的排序,但不能在不查看源的情况下确定。

您最好的选择是联系Matlab技术支持,以确保他们的排序算法确实稳定,并且如果他们有任何计划在将来更改它。

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

>> edit sortrows

编辑:更多info

答案 1 :(得分:1)

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

但是,您始终可以通过添加具有排序整数的列(例如1:N)并将其作为第二个值在此列上进行排序(如果新列是第三列,则在[1,3]上排序)来实现稳定性。一个)。

答案 2 :(得分:0)

是的,那是1的含义。如果您要放入[1,2],它会排序第二行。