美文网首页
php常见算法题

php常见算法题

作者: 张清柏 | 来源:发表于2019-12-19 01:22 被阅读0次
//二分查找 
/**
 * @param $arr string 有序数组
 * @param $start int 起始位置
 * @param $end int 结束位置
 * @param $v int 查找的之
 * @return int
 */
function binarySearch($arr,$start,$end,$v){
    $mid=ceil(($start+$end)/2);
    $m=$arr[$mid];
    if ($v==$m){
        return $mid;
    }
    if ($v>$m){
        $start=$m;

    }

    if ($v<$m){
        $end=$m;
    }
    return binarySearch($arr,$start,$end,$v);

}

//快速排序法
$arr=array(12, 5,33,78,96,16, 8,57,62,33);
function quickSort($arr){
    if (count($arr)<=1){
        return $arr;
    }
    $refer=$arr[0];
    $left=[];
    $right=[];

    for ($i=1;$i<count($arr);$i++){
        if ($refer>$arr[$i]){
            $left[]=$arr[$i];
        }

        if ($refer<=$arr[$i]){
            $right[]=$arr[$i];
        }
    }
    $left=quickSort($left);

    $right=quickSort($right);

    return array_merge($left,[$refer],$right);

}

var_dump(quickSort($arr));
//冒泡排序
function bubbleSort($arr){
    for($i = 0,$length = count($arr);$i < $length;$i++){

        //内存循环
        for($j = 0;$j < ($length - $i - 1);$j++){
            //拿着j变量所对应的数组元素,与后面的元素进行比较
            if($arr[$j] > $arr[$j + 1]){
                //交换位置
                $temp              = $arr[$j];
                $arr[$j]           = $arr[$j+1];
                $arr[$j+1]         = $temp;
            }
        }
    }
return $arr;
}
//选择排序
$a = array(2,13,42,34,56,23,67,365,87665,54,68,3);

function bubbleSort($a){
    for ($i=0;$i<count($a);$i++){
        for ($j=$i+1;$j<count($a);$j++){
            if ($a[$j]>$a[$i]){
                $tmp=$a[$i];
                $a[$i]=$a[$j];
                $a[$j]=$tmp;
            }
        }
    }
    return $a;
}
$res=bubbleSort($a);
var_dump($res);

// 斐波那契数列
function fbnq($n){

    if ($n==1){
        return 1;
    }
    if ($n==2){
        return 1;
    }
    return fbnq($n-1)+fbnq($n-2);
}
echo fbnq(6);

// 斐波那契数列
function fbnq($n){
    $a[1]=1;
    $a[2]=1;
    for ($i=3;$i<=$n;$i++){
        $a[$i]= $a[$i-1]+$a[$i-2];
    }
    return $a;

}
var_dump(fbnq(6));
//猴子称王的问题
//猴子称王的问题 一共m个猴子,第n个被淘汰
function king($m,$n){
    $arr=range(1,$m);
    $i=0;
    while (count($arr)>1){
        if ($i%$n !=0){
            array_push($arr,$arr[$i-1]);
        }
        unset($arr[$i-1]);
        $i++;
    }
    return $arr;
}

var_dump(king(3,2));

//猴子称王的问题 一共m个猴子,第n个被淘汰 从第k个人开始数
function king($m,$n,$k){
    $arr1=range(1,$k-1);
    $arr2=range($k,$m);
    $arr=array_merge($arr2,$arr1);
    $i=0;
    while (count($arr)>1){
        if ($i%$n !=0){
            array_push($arr,$arr[$i-1]);
        }
        unset($arr[$i-1]);
        $i++;
    }
    return $arr;
}

var_dump(king(3,2,1));

相关文章

  • php常见算法题

  • 0.PHP面试都问什么

    PHP基础语法知识PHP底层原理常见的算法实现MysqlRedisHTTP原理fast-cgi常见的Linux命令...

  • 常见算法题

    1. reserve 让数组反转倒置 2. 排序算法 面试最常考:快速排序和希尔算法 (tips) 原理:如果是想...

  • PHP经典算法题

    PHP学习之路---算法题 1.使用PHP描述顺序查找和二分查找(也叫做折半查找)算法,顺序查找必须考虑效率,对象...

  • php 实现常见算法

    1.冒泡排序 2.快速排序 3.斐波那契额数列斐波那契数列:1 1 2 3 5 8 13 21 34 55 … 概...

  • PHP常见排序算法

    1:冒泡排序 排序思路:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大...

  • 程序员进阶之算法练习(三十四)LeetCode专场

    前言 LeetCode上的题目是大公司面试常见的算法题,今天的目标是拿下5道算法题:1、2、3题都是Medium的...

  • Python 常见算法题

    打印菱形 打印直角三角 打印等边三角形 打印100以内的斐波那契数列 求10万内的所有素数 猴子吃桃问题 猴子第一...

  • 面试常见算法题

    1.对象转换为数组 2.统计一个字符串出现最多的字母 3.找出下列正数组的最大差值 4.获取数组中最大或者最小值 ...

  • 常见的算法题

    一、找两个链表的交点 存在集中特殊情况: 1、链表长度相同且没交点 2、链表长度相同有交点 3、长度不同有交点(最...

网友评论

      本文标题:php常见算法题

      本文链接:https://www.haomeiwen.com/subject/wmhjnctx.html