基本的に私は4人の間で「ランキング」を取得しようとしています。私は、人1のスコアがインデックス0にあり、人2のスコアがインデックス1にあるというように、各人のスコアを含むプレイヤースコアの配列を持っています。リスト内のトップスコアラーのインデックスを取得したいと思います。第2、第3、そして最後を得る。リストをソートしてインデックスを見つける
解決方法: 私は配列のplayerScoresからリストを作成しました(必要ではないかもしれないと感じますが、私がしようとしていることのために、元のスコア)を含む。そして、私はリストの中の最大数を見つけ出し、そのインデックスを取得します。次に、そのインデックスで値を負の値に変更します。そして、私はステップをやり直します。
私ははるかに効率的な方法でこのコードのように少ない乱雑としてこれを行うことができますように私は感じList<int> listOfScores = new List<int>(playerScores.ToList());
// We get the max value to determine the top scorer of the game
// and then we insert a negative value at that same spot of the list so we can
// continue on figuring out the following max value in the list, etc.
rank1 = listOfScores.IndexOf(listOfScores.Max());
listOfScores[rank1] = -1;
rank2 = listOfScores.IndexOf(listOfScores.Max());
listOfScores[rank2] = -1;
rank3 = listOfScores.IndexOf(listOfScores.Max());
listOfScores[rank3] = -1;
rank4 = listOfScores.IndexOf(listOfScores.Max());
listOfScores[rank4] = -1;
... まあ、これはまた、その負のは、人が得ることができるスコアではないと仮定しています。これより効率的な方法はありますか?そして、もし我々が否定的なスコアを持ちたいとすれば、どうだろう?
なぜあなただけlistOfScores.Sort()を使用することはできません。 ? http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx – ccKep
listOfScores.Sort()はスコアを並べ替えますが、以前のインデックスを追跡しません。 – skyjlv