Mantukasx Ответов: 1

Как я могу разобраться с этим контейнером


Я ищу самого молодого игрока, мне нужно отсортировать этот контейнер и взять первого игрока, однако я не знаю, как это сделать, он говорит: "левая сторона должна быть переменным свойством или индексатором".

Что я уже пробовал:

Я пробовал метод "пузырьковой сортировки", но он не сработал для меня, или, может быть, я просто делаю это неправильно, понятия не имею.
<pre>        public Player FindYoungestPlayer(PlayersContainer entireSportsTeam)
        {
            Player youngestPlayer = entireSportsTeam.GetPlayer(0);
            for (int i = 0; i < entireSportsTeam.Count; i++)
            {
                for (int j = 0; j < entireSportsTeam.Count-1; j++)
                {
                    if (entireSportsTeam.GetPlayer(i).Birthday > youngestPlayer.Birthday)
                    {
                        youngestPlayer = entireSportsTeam.GetPlayer(i);
                        entireSportsTeam.GetPlayer(i) = entireSportsTeam.GetPlayer(j);
                        entireSportsTeam.GetPlayer(j) = youngestPlayer;
                    }
                }
            }
            return youngestPlayer;
        }

1 Ответов

Рейтинг:
12

OriginalGriff

Проблема в том, что вы не меняетесь должным образом, потому что ваше сравнение не то, что вы думаете, и даже когда оно совпадает, j не имеет отношения к тому, что вы хотите поменять.

Если вы хотите найти самый молодой, то это один проход, хотя вам не нужно сортировать или вообще использовать вложенный цикл:

Player youngestPlayer = entireSportsTeam.GetPlayer(0);
for (int i = 0; i < entireSportsTeam.Count; i++)
{
    if (entireSportsTeam.GetPlayer(i).Birthday > youngestPlayer.Birthday)
    {
        youngestPlayer = entireSportsTeam.GetPlayer(i);
    }
}
И вы не должны ничего сортировать в методе под названием "FindXXX", потому что его название вообще не подразумевает никаких изменений в данных.