PHP常见算法合集代码实例

吾爱主题 阅读:116 2021-11-03 15:48:00 评论:0

许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下

一、文件夹遍历

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 <?php function allFile( $path = __DIR__, $level = 1) {    if ( is_dir ( $path ) && is_readable ( $path )) {      if ( $pd = opendir( $path )) {        while (( $file = readdir( $pd )) !== false) {          if ( $file != '.' && $file != '..' ) {            if (( $subPath = $path . DIRECTORY_SEPARATOR . $file ) && is_dir ( $subPath )) {              echo "<pre />" ;              echo '<span style="color: red;font-weight:bold;">' . str_repeat ( "--" , $level ) . $subPath . '</span>' ;              self::allFile( $subPath , $level ++);            } else {              echo "<pre />" ;              echo str_repeat ( "--" , $level ) . $subPath ;            }          }        }      }    } else {      echo "{$path} is not a available dir" ;    } }

二、九九乘法表

?
1 2 3 4 5 6 7 8 9 10 <?php function create() {    for ( $i = 1; $i <= 9; $i ++) {      for ( $j = 1; $j <= $i ; $j ++) {        echo $j . '*' . $i . '=' . $i * $j . PHP_EOL;      }      echo "<br />" ;    } }

三、无限极递归分类

①、递归算法

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 <?php function getTree( $array , $pid =0, $level = 0) {    //声明静态数组,避免递归调用时,多次声明导致数组覆盖    static $list = [];      foreach ( $array as $key => $value ) {      //第一次遍历,找到父节点为根节点的节点 也就是pid=0的节点      if ( $value [ 'pid' ] == $pid ) {        //父节点为根节点的节点,级别为0,也就是第一级        $value [ 'level' ] = $level ;        //把数组放到list中        $list [] = $value ;        //把这个节点从数组中移除,减少后续递归内存消耗        unset( $array [ $key ]);        //递归调用        getTree( $array , $value [ 'id' ], $level +1);      }    }    return $list ; }

②、引用算法

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php function getTree( $array ) {    //第一步 构造数据    $items = [];    foreach ( $array as $value ) {      $items [ $value [ 'id' ]] = $value ;    }      //第二部 遍历数据 生成树状结构    $tree = [];    foreach ( $items as $key => $value ) {      if (isset( $items [ $item [ 'pid' ]])) {        $items [ $item [ 'pid' ]][ 'son' ][] = & $items [ $key ];      } else {        $tree [] = & $items [ $key ];      }    }    return $tree ; }

四、冒泡排序

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <?php function bubbleSort( $arr ) {    $len = count ( $arr );    for ( $i =1; $i < $len ; $i ++) {      for ( $k =0; $k < $len - $i ; $k ++) {        if ( $arr [ $k ] > $arr [ $k +1]) {          $tmp = $arr [ $k +1];          $arr [ $k +1]= $arr [ $k ];          $arr [ $k ]= $tmp ;        }      }    }    return $arr ; }<br type= "_moz" >

五、选择排序

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?php function selectSort( $arr ) {    $len = count ( $arr );    for ( $i =0; $i < $len -1; $i ++) {      $p = $i ;      for ( $j = $i +1; $j < $len ; $j ++) {        if ( $arr [ $p ] > $arr [ $j ]) {          $p = $j ;        }      }      if ( $p != $i ) {        $tmp = $arr [ $p ];        $arr [ $p ] = $arr [ $i ];        $arr [ $i ] = $tmp ;      }    }    return $arr ; }

六、插入排序

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 <?php function insertSort( $arr ) {    $len = count ( $arr );    for ( $i =1; $i < $len ; $i ++) {      $tmp = $arr [ $i ];      for ( $j = $i -1; $j >=0; $j --) {        if ( $tmp < $arr [ $j ]) {          $arr [ $j +1] = $arr [ $j ];          $arr [ $j ] = $tmp ;        } else {          break ;        }      }    }      return $arr ; }

七、快速排序

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?php function quickSort( $arr ) {    $len = count ( $arr );      if ( $len <= 1) return $arr ;      $base_num = $arr [0];    $left_array = [];    $right_array = [];    for ( $i =1; $i < $len ; $i ++) {      if ( $base_num > $arr [ $i ]) {        $left_array [] = $arr [ $i ];      } else {        $right_array [] = $arr [ $i ];      }    }    $left_array = self::quickSort( $left_array );    $right_array = self::quickSort( $right_array );    return array_merge ( $left_array , array ( $base_num ), $right_array ); }

到此这篇关于PHP常见算法合集代码实例的文章就介绍到这了,更多相关PHP常见算法内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/weixin_41635750/article/details/109071429

可以去百度分享获取分享代码输入这里。
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

【腾讯云】云服务器产品特惠热卖中
搜索
标签列表
    关注我们

    了解等多精彩内容