1. 冒泡排序
//方法一
function bubble($array)
{
$count = count($array);
for ($i=0; $i < $count; $i++) {
for ($j=$i+1; $j < $count; $j++) {
if ($array[$i] > $array[$j]) {
$temp = $array[$i];
$array[$i] = $array[$j];
$array[$j] = $temp;
}
}
}
}
$array = [2,1,5,4,7,9,0];
//------------result------------//
Array
(
[0] => 0
[1] => 1
[2] => 2
[3] => 4
[4] => 5
[5] => 7
[6] => 9
)
//方法二
function array_sort($arr)
{
$result = [];
while (true) {
$low = array_shift($arr);//将第一个元素弹出,此时$arr=[2,7,5];
if ($arr) {
foreach ($arr as $k => $v) {
if ($low > $v) {//若$low>$v,则交换位置
$arr[$k] = $low;
$low = $v;
}
}
} else {
$result[] = $low;
break;
}
$result[] = $low;
}
return $result;
}
$arr = [4,2,7,5];
//------------result------------//
Array
(
[0] => 2
[1] => 4
[2] => 5
[3] => 7
)
在数组相同长度下,经测试,方法二执行速度略快于方法一。
2. 约瑟夫环(猴王问题)
function king($n, $m)
{
$monkey = range(1, $n);
$i = 0;
while (count($monkey) > 1) {
$i += 1;
$head = array_shift($monkey); //出列最前面的猴子
if ($i % $m != 0) { //如果不能被$m整除,则将该猴子返回数组尾部,否则出列
array_push($monkey, $head);
}
}
return current($monkey);
}
//------------result------------//
echo king(10, 7);// 9