2015-06-21 73 views
0

我正在開發一個項目,我需要在2個數組中進行排序,並按照降序排列打印出來。在C中反向排序2數組#

這是我現在有:

string[] nPlayer = {"aaa", "bbb", "ccc", "ddd", "eee"} 
    int[] nScore = {555, 444, 333, 222, 111} 

    public void Print() 
    { 
     Array.Sort(nScore, nPlayer); 
     PrintKeysAndValues(nPlayer, nScore); 
    } 

    public static void PrintKeysAndValues(String[] myKeys, int[] myValues) 
    { 
     for (int i = 0; i < myKeys.Length; i++) 
     { 
      Console.WriteLine("{0}\t{1}", myKeys[i], myValues[i]); 
     } 
    } 

輸出我得到的是:(排序由數字)

eee 111 
ddd 222 
ccc 333 
bbb 444 
aaa 555 

我需要得到它在這種反向顯示(排序方式號碼)

aaa 555 
bbb 444 
ccc 333 
ddd 222 
eee 111 

只是注意...輸入時的數字都將隨機不是爲了...

+0

經過排序後循環和交換陣列中的所有值第一個到最後,最後一個first.Also您的INT []不會以這種方式編譯。 – deathismyfriend

+0

是的,我看到對不起,在 –

+0

輸入它,因爲數據看起來相互關聯,你最好使用一個類,所以分數與玩家保持一定。 – Plutonix

回答

1

您可以使用Array.Revers方法反轉數組。

public void Print() 
    { 
     Array.Sort(nScore, nPlayer); 
     Array.Reverse(nScore); 
     Array.Reverse(nPlayer); 
     PrintKeysAndValues(nPlayer, nScore); 
    } 
+0

時,這並不是很複雜如果「在輸入過程中的數字都是隨機的不按順序的話......」我不明白這是如何工作的... ...這不會逆轉隨機順序嗎? – danludwig

+0

還要注意,使用一個類來保存玩家的數據是更加可行的。 – deathismyfriend

+0

@danludwig上面的第一個基於分數對數組進行排序。然後它將兩個數組反轉,保持數據一致。 – deathismyfriend

0

可以使用任何比較排序算法以降序排列numbers數組。
排序時,需要爲字符串數組重新排列相同的元素。
您是否正在尋找一個代碼來完成上述操作?

+0

如果你有一個例子,它會有所幫助。我目前正在努力學習和C#是複雜的...可能只是堅持使用紅寶石。 –

+0

當你開始從開始學習 –

1

LINQ也工作,並可以讓你完全跳過的Array.Sort:

nScore = nScore.OrderByDescending(c => c).ToArray(); 
nPlayer = nPlayter.OrderByDescending(c => c).ToArray(); 
PrintKeysAndValues(nPlayer, nScore); 
+2

與那wouldnt球員和分數混在一起,而不是相同的 –

+0

不要忘了你需要使用System.Linq來編譯。 – danludwig

+0

哎呀,是的,你是對的......我沒有注意到兩個陣列之間的關係。您可以使用Tuple ,創建播放器對象,或者使用LINQ的Select擴展方法將其投影到新對象中,以便輕鬆排序。其他任何方法都是黑客行爲。 – br4d