2009-12-26 226 views
18

如果我有兩個數組,x和y,其中y是x中每個元素數十的值。現在,我想排序y。但是,y的順序與x的順序不同。所以,在排序y中的哪個元素與x有關之後,我無法判斷,例如x [0]。我想要一個「雙重排序」可能。你的幫助是無限的讚賞!對與另一個陣列相關的數組進行排序

+0

,我們在談論什麼語言?是否有任何性能限制? – 2009-12-26 20:10:15

+0

C#,沒有約束 – 2009-12-26 20:13:31

回答

48

Array.Sortan overload接受兩個數組;一個用於鑰匙,另一個用於物品。的的項目是根據keys數組排序:

int[] keys = { 1, 4, 3, 2, 5 }; 
string[] items = { "abc", "def", "ghi", "jkl", "mno" }; 
Array.Sort(keys, items); 
foreach (int key in keys) { 
    Console.WriteLine(key); // 1, 2, 3, 4, 5 
} 
foreach (string item in items) { 
    Console.WriteLine(item); // abc, jkl, ghi, def, mno 
} 

所以你的情況,這聽起來像你想:

Array.Sort(y,x); // or Sort(x,y); - it isn't 100% clear 
+5

+1,從來沒有聽說過這個小寶石'Array.Sort(x,y)'。 – 2009-12-26 20:38:51

+0

謝謝。真的有幫助。 – 2009-12-27 20:34:19

+0

吹我的腦海......非常有用。謝謝! – Totero 2013-05-01 14:56:26

1

如果y總是x的十數值,y可能不應該存在 - 您應該在需要時直接計算x的值。

通常,只有當排序算法採用自定義的「交換」函數時,纔可以對並行數組進行排序(無需手動滾動排序算法),您可以通過同時交換兩個數組中的元素來實現該函數。在C++中std :: sort和C中的qsort不允許這樣做。

同樣在一般情況下,考慮單個數組,其中元素是一對項目,而不是每個項目的並行數組。這使得使用「標準」算法更容易。

相關問題