В основном я пытаюсь получить "рейтинг" между 4 людьми. У меня есть массив оценок игроков, который содержит оценки каждого человека, так что счет человека 1 находится в индексе 0, счет человека 2 находится в индексе 1 и т. Д ... Я хочу получить индекс лучшего бомбардира в списке и получите второе, третье и последнее.
Моя попытка решения:
Я сделал список из массива 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;
Я чувствую, что могу сделать это гораздо более эффективно и менее беспорядочно, чем этот код ...
Ну, это также предполагает, что отрицательный результат не является результатом, который может получить человек. Есть ли другой способ быть более эффективным, чем этот? А что если сказать, что мы хотим иметь отрицательные оценки?