2015-09-01 82 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