//贝格尔编排法
function berger(){
// 双循环
// 根据队伍数量生成数组
$num = 10;
$ar = [];
for ($i = 1; $i <= $num; $i++) {
$ar[] = $i;
};
// halt($numArr);
// $ar = array('1', '2', '3', '4', '5', '6' ,'7','8','9');直接传入数组或者选手名称或者id或者标识
if (count($ar) % 2) $ar[] = '0';
$t = array_merge(range(1, count($ar) - 1), range(1, count($ar) - 1));
$len = count($ar);
$m = range(1, $len);
$lun = 0;
$last = 0;
$k = $len <= 4 ? 1 : ($len - 4) / 2 + 1;
while ($lun++ < ($len - 1) * 2) {
$s = array_values($m);
echo "== 第$lun" . "轮 ==</br>";
for ($i = 0; $i < $len / 2; $i++) {
printf("%s -- %s </br>", $ar[$s[$i] - 1], $ar[$s[$len - 1 - $i] - 1]);
}
list($m[0], $m[$len - 1]) = array($m[$len - 1], $m[0]);
for ($i = 0; $i < $k; $i++) {
if ($m[++$last % $len] == $len) $last++;
}
$n = $last %= $len;
for ($i = 1; $i < $len; $i++) {
if (($m[$n]) == $len) $n = ($n + 1) % $len;
$m[$n] = $i;
$n = ($n + 1) % $len;
}
}