Использование сортировки выбором для сортировки списка на основе очков игрока?

Я пытаюсь отсортировать список из двоичного файла хоккейной статистики игроков. Моя цель — использовать алгоритм сортировки выбором для сортировки списка в порядке убывания на основе количества очков в игре, где очки = голы + передачи.

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

Вот структура.

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++;
}

После этого я застрял.

Вот шаги, которые функция должна выполнять в общих чертах.

  1. Подсчитайте количество очков по формуле: очки = игрок[i].goals + игрок[i].assists

  2. Отсортируйте массив структур в порядке убывания по количеству точек.

  3. Меняйте местами разные массивы, пока список не будет отсортирован в порядке убывания на основе наибольшего количества точек наименьшего.


person Scholar    schedule 10.04.2013    source источник
comment
Взгляните на эту веб-страницу, en.wikipedia.org/wiki/Selection_sort. Он содержит простой, хорошо прокомментированный код, похожий на C++, для выполнения сортировки выбором. Адаптируйте его к своей проблеме.   -  person john    schedule 11.04.2013


Ответы (1)


Обязательно ли использовать сортировку выбором? Вместо этого вы можете использовать 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)).

person miorel    schedule 10.04.2013
comment
К сожалению, я должен, иначе я бы сделал это, в этом весь смысл упражнения. - person Scholar; 11.04.2013