gpt4 book ai didi

c++ - 使用选择排序根据玩家点数对列表进行排序?

转载 作者:行者123 更新时间:2023-11-30 17:52:53 24 4
gpt4 key购买 nike

我正在尝试从球员曲棍球统计数据的二进制文件中对列表进行排序。我的目标是使用选择排序算法根据比赛中的得分按降序对列表进行排序,其中得分 = 进球 + 助攻。

我正在使用一个结构数组,其中每个数组都是玩家统计数据的结构。

这是结构。

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. 使用公式points =player[i].goals +player[i].assists计算得分

  2. 根据点数对结构体数组进行降序排序。

  3. 交换不同的数组,直到列表根据点数从多到少按降序排序。

最佳答案

必须使用选择排序吗?如果您定义自定义比较函数,则可以使用 std::sort 来代替:

bool compare_players(Player const& a, Player const& b) {
return (b.goals + b.assists) < (a.goals + a.assists);
}

然后将你的玩家扔进一个名为players vector 中,然后

std::sort(players.begin(), players.end(), &compare_players);

与实现选择排序 (O(n^2)) 相比,此代码更少,而且效率更高 (O(n log n))。 p>

关于c++ - 使用选择排序根据玩家点数对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15937735/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com