PHP算法

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • ,将“1234567890” 转为 “1,234,567,890”; function($str,$count){...
    晓晨科科阅读 1,020评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,585评论 0 52
  • 概述:排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    每天刷两次牙阅读 9,084评论 0 15
  • 前景回顾 简介:但凡是女孩,她对未来的憧憬不亚于灰姑娘对水晶鞋的渴望,九天就是“芸芸众女”中的一个。可是童话毕竟是...
    夜小漾阅读 4,353评论 4 6
  • 总是害怕结局到来的时刻每一次都恐慌结果的好坏总是在意别人的看法评价焦虑自己达不到身边人的期望想做一只鸵鸟 把头埋...
    C__chen阅读 1,215评论 0 0