Я пытаюсь отсортировать список из бинарного файла статистики игроков хоккея. Моя цель — использовать алгоритм сортировки выбора для сортировки списка в порядке убывания на основе количества очков в игре, где очки = голы + голевые передачи.
Я использую массив структур, где каждый массив представляет собой структуру статистики игроков.
Вот структура.
struct Player
{
char name[20];
int goals;
int assists;
int rating;
};
Это то, что у меня есть в моей функции массива сортировки.
void sortArrays( Player players[], int numPlayers)
int top=0;
int ssf;
int last=numPlayers;
int ptr;
int i = 0;
Player temp;
while (top < last)
{
ptr=top;
ssf=top;
pnts = players[i].goals + players[i].assists;
i++;
}
После этого я застрял.
Вот шаги, которые функция должна выполнять в общих чертах.
Подсчитайте количество очков, используя формулу points = player [i] .goals + player [i] .assists
Сортировать массив структур в порядке убывания на основе количества точек.
Поменяйте местами разные массивы, пока список не будет отсортирован в порядке убывания, основываясь на наибольшем количестве баллов к наименьшему.
Вы должны использовать сортировку выбора? Вы могли бы использовать std::sort
вместо этого, если вы определяете пользовательскую функцию сравнения:
bool compare_players(Player const& a, Player const& b) {
return (b.goals + b.assists) < (a.goals + a.assists);
}
Затем бросьте своих игроков в vector
называется players
и просто
std::sort(players.begin(), players.end(), &compare_players);
Это меньше кода, и это также более эффективно (O (n log n)), чем реализация сортировки выбора (O (N ^ 2)).
Других решений пока нет …