我正在创建一个比较简单的游戏,我需要跟踪玩家的得分。 25个人同时玩这个游戏,这些玩家会被放到一个数组中:
public static int[] allPlayers = new int[25];
比方说,根据正确答案,当前玩家将获得 100 分。因此,如果玩家 1 已启动,则代码将类似于以下内容:
allPlayers[0] += 100;
如果玩家 3 上场,则正确答案的代码将是:
allPlayers[2] += 100;
在游戏结束时,我想确定哪个玩家的积分最多。请注意,我不能简单地对该数组进行排序,因为我需要数组的顺序保持不变。如果顺序不完好无损,我将无法分辨哪个玩家的名字指向哪个点。
我很想听听大家的意见,期待您的回复。
非常感谢,
埃文
最佳答案
无需排序,只需遍历数组,跟踪目前看到的最大值和该值的索引。
var largest = -1;
var player = -1;
for (var i = 0; i < allPlayers.Length; ++i)
{
if (allPlayers[i] > largest)
{
player = i;
largest = allPlayers[i];
}
}
Console.WriteLine( "Player {0} wins, with score {1}", player, largest );
处理关系留作练习。
关于c# - 从数组中获取最大值而不排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7591902/