c# - 从数组中获取最大值而不排序

标签 c# winforms arrays

我正在创建一个比较简单的游戏,我需要跟踪玩家的得分。 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/

相关文章:

c# - 不能将 Descendants() 或 Elements() 与 xmlns 一起使用

c# - 通过 lambda 从另一个集合中排除一个集合

c# - 如何在卸载时从应用程序数据目录中删除文件?

java - 在 Java 中复制数组

arrays - 你如何在 matlab 中初始化一个包含 90 个 '0' 的数组?

c# - 默认情况下停止 Datagrid 选择第一行

c# - Entity Framework 代码优先通过关系表导航属性

c# - 如何将正确的 url 嵌入到 HTML 字符串中的自定义字体

c# - 不是顶级窗体的窗体不能显示为模式对话框。在调用 showDialog 之前从任何父窗体中删除窗体

PHP json_encode 在 MySQL 表的第一个索引上返回空数组