php 实现常见算法

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

推荐阅读更多精彩内容

  • 我们经常会在时项目使用各种算法,比如排序.排序算法是最基本的算法之一. 排序算法可以分为内部排序和外部排序,内部排...
    香橙柚子阅读 3,446评论 2 5
  • 总结一下常见的排序算法。 排序分内排序和外排序。内排序:指在排序期间数据对象全部存放在内存的排序。外排序:指在排序...
    jiangliang阅读 5,235评论 0 1
  • 概述 排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部...
    蚁前阅读 10,589评论 0 52
  • 排序算法基础 排序算法,是一种能将一串数据按照特定的排序方式进行排列的一种算法,一个排序算法的好坏,主要从时间复杂...
    jackyshan阅读 9,558评论 3 11
  • 感谢喜马拉雅中听到的谢涛主讲系列。 感谢瑜伽,时隔四个半月,今天重新走进教室。 感谢棠棠切好梨,我只要拿起叉子即可。
    迎粮阅读 728评论 0 0