Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果有20名不同技能的玩家组成一个数组,我如何使两个团队的规模和技能水平相等,并使其在PHP中具有可扩展性_Php_Arrays_Algorithm_Sorting - Fatal编程技术网

如果有20名不同技能的玩家组成一个数组,我如何使两个团队的规模和技能水平相等,并使其在PHP中具有可扩展性

如果有20名不同技能的玩家组成一个数组,我如何使两个团队的规模和技能水平相等,并使其在PHP中具有可扩展性,php,arrays,algorithm,sorting,Php,Arrays,Algorithm,Sorting,这需要用PHP来解决,但是任何语言的概念都可以 这被要求是可伸缩的,即你可以在之后添加玩家,你的算法仍然可以工作 你总共有20名玩家(可以添加更多)。每个人的技能等级分别为1-10级 要求您为两支队伍提供同等数量的人员,并尽可能接近同等的技能水平。按技能水平对球员列表进行排序。计算技能水平的中值,例如,许多玩家的技能水平高于中值,而其他玩家的技能水平低于中值 找到下一个最近的玩家的技能等级。前两名被选中的球员,每队一名,是技能水平中位数的球员,其次是最近的技能水平 找到下两名得分与前两名得分最接

这需要用PHP来解决,但是任何语言的概念都可以

这被要求是可伸缩的,即你可以在之后添加玩家,你的算法仍然可以工作

你总共有20名玩家(可以添加更多)。每个人的技能等级分别为1-10级


要求您为两支队伍提供同等数量的人员,并尽可能接近同等的技能水平。

按技能水平对球员列表进行排序。计算技能水平的中值,例如,许多玩家的技能水平高于中值,而其他玩家的技能水平低于中值

找到下一个最近的玩家的技能等级。前两名被选中的球员,每队一名,是技能水平中位数的球员,其次是最近的技能水平

找到下两名得分与前两名得分最接近的球员。交换这些球员,让他们加入球队。然后拿下两个,不要交换。接下来的两个,交换它们。等等

无论你有8名玩家还是108名玩家,这个算法都应该有效。只要做一些改动,它就可以支持2支20人的球队,或者支持100支20000人的球队

让我们创建一个示例。8名玩家,名为A至H,技能等级为0至9。所以玩家B7被命名为B,技能等级为7。 您的可用玩家包括:

  • A4
  • B9
  • C7
  • D3
  • E5
  • F5
  • G1
  • H8
按技能级别排序可为我们提供:

  • G1
  • D3
  • A4
  • E5
  • F5
  • C7
  • H8
  • B9
技能水平中位数为5。下一个最接近的技能等级也是5,所以前两个被选中的玩家是E5对一队和F5对二队

接下来的两个玩家是A4和C7。交换它们。C7转到一队,A4转到二队

接下来的两个玩家是D3和H8。你交换了最后两个,所以不要交换这两个。D3去第一队,H8去第二队

接下来的两个玩家是G1和B9。你没有交换最后两个,所以交换这些。G1转到第二组,B9转到第一组

现在你有2支球队,每个队有4名球员,他们的技能水平大致相同

由此产生的小组将是:

TeamOne:
 - E5
 - C7
 - D3
 - B9
Average skill level is 6.

TeamTwo:
 - F5
 - A4
 - H8
 - G1
Average skill level is 5 (to the nearest whole skill level).
与你合作的球员越多,团队技能水平的匹配就越紧密


实现这一点的PHP代码应该编写得相当简单。

您希望技能水平的总和相同吗?你想让人们的技能尽可能匹配吗?每个团队的技能都必须尽可能匹配-谢谢!