美文网首页
php 实现常见算法

php 实现常见算法

作者: gurlan | 来源:发表于2019-12-02 10:45 被阅读0次

    1.冒泡排序

    $numbers = array(1,3,4,5,6,7,8,9,2,0);
    $length = count($numbers);
    for ($i=0;$i<$length-1;$i++){
        for ($j=0;$j<$length-$i-1;$j++){
            if ($numbers[$j]>$numbers[$j+1]){
                $temp = $numbers[$j+1];
                $numbers[$j+1] = $numbers[$j];
                $numbers[$j]=$temp;
            }
        }
    }
    var_dump($numbers);
    

    2.快速排序

    $numbers = array(16,3,4,5,6,7,8,9,2,0);
    function quickSort($numbers){
        $length = count($numbers);
        if ($length<1){
            return $numbers;
        }
        $key = $numbers[0];
        $left = array();
        $right = array();
        for ($i=1;$i<$length;$i++){
            if ($numbers[$i]<$key){
                $left[] = $numbers[$i];
            }else{
                $right[] = $numbers[$i];
            }
           
        }
    
        $left = quickSort($left);
        $right = quickSort($right);
        return array_merge($left,array($key),$right);
    }
    }
    
    quickSort($numbers);
    

    3.斐波那契额数列
    斐波那契数列:
    1 1 2 3 5 8 13 21 34 55 …

    概念:
    前两个值都为1,该数列从第三位开始,每一位都是当前位前两位的和
    规律公式为:
    Fn = F(n-1) + F(n+1)
    F:指当前这个数列
    n:指数列的下标

    非递归写法:
    function fbnq($n){  //传入数列中数字的个数
        if($n <= 0){
            return 0;
        }
        $array[1] = $array[2] = 1; //设第一个值和第二个值为1
        for($i=3;$i<=$n;$i++){ //从第三个值开始
            $array[$i] = $array[$i-1] + $array[$i-2]; 
            //后面的值都是当前值的前一个值加上前两个值的和
        }
        return $array;
    }
    

    递归写法:

    function fbnq($n){
        if($n <= 0) return 0;
        if($n == 1 || $n == 2) return 1;
        return fbnq($n - 1) + fbnq($n - 2);
    }
    

    4.判断是否是回文

     $string="abc126321cba";
      $stra=array();
      $strb=array();
      $res=checkhuiwen($string);
      function checkhuiwen($string){
           //输入字符串转换为数组
         for($i=0;$i<strlen($string);$i++){
            $stra[$i]=$string[$i];
          }
           //逆序输出数组array_reverse
           $strb=array_reverse($stra);
           //判断两数组是否相等,相等为回文
          for($i=0;$i<count($stra);$i++){
           if($stra[$i]!=$strb[$i]){
              return 1;
              break;
           }     
      }
      return 2;
      }
      if($res==2){
        echo "YES";
      }else{
        echo "NO!";
      }
    

    相关文章

      网友评论

          本文标题:php 实现常见算法

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