php 常见算法合集
目录
一、文件夹遍历
二、九九乘法表
三、无限极递归分类
四、冒泡排序
五、选择排序
六、插入排序
七、快速排序
一、文件夹遍历
<?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";}
}
二、九九乘法表
<?php
function create()
{for ($i = 1; $i <= 9; $i++) {for ($j = 1; $j <= $i; $j++) {echo $j . '*' . $i . '=' . $i * $j . PHP_EOL;}echo "<br />";}
}
三、无限极递归分类
- 递归算法
<?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;
}
- 引用算法
<?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;
}
四、冒泡排序
<?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;
}
五、选择排序
<?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;
}
六、插入排序
<?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;
}
七、快速排序
<?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 3 3公派算法代码,PHP常见算法合集代码实例
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历 function allFile($path = __DIR_ ...
- php最常见代码,PHP常见算法合集代码实例
许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历<?php function allFile($path ...
- 《安富莱嵌入式周报》第297期:开源生物医学成像系统,可肺部成像,C算法合集500例,突出极致运算速度,数值方法书籍,芯片级激光隔离,3D打印机固件Marlin
往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...
- 算法合集之《信息学中守恒法的应用》(不错的文章保存一下)
算法合集之<信息学中守恒法的应用>(不错的文章保存一下) by 三江小渡 [摘要]本文提出和总结了"守恒法",以及它在信 息学竞赛中的一些应用.守恒的本质是寻找变化中的 ...
- git 强制更新远程_版本控制管理工具git的常见指令合集
今天小千就来给大家介绍一下git中比较常见的指令合集,方便大家使用git,建议收藏起来方便日后查阅. 一.常见的命令 git help <command> # 显示command的help ...
- 1 Go语言开发环境搭建详细教程+go常见bug合集【Go语言教程】
Go语言开发环境搭建[Win.Linux.Mac] 1 SDK下载 官网地址:golang.org,因为一些原因国内可能无法访问.可以使用下面第二个链接. 国内地址访问:https://golang. ...
- 程序员小灰漫画算法合集
2017合集 2018合集 2019合集 2020合集
- 互联网中常见的推荐算法合集
在上网购物.看小说.买电影票的时候,都会遇到各种各样的推荐,给我们推荐一些我们曾经买过或收藏过的同类型产品,或者是推荐一些我们看过的小说题材相同的小说.那这些产品推荐都是如何实现的呢?我们今天就来聊聊 ...
- 八大排序算法合集 (归并排序、交换排序、插入排序、选择排序......)
目录 一.归并排序 二.交换排序 1.快速排序 2.冒泡排序 三.插入排序 1.直接插入排序(基于顺序查找) 2.折半插入排序(基于折半查找) 3.希尔排序(基于逐趟缩小增量) 四.选择排序 0.直接 ...
最新文章
- MFC界面库BCGControlBar v25.3新版亮点:Gauge Controls
- java获取数据库MetaData
- linux系统监控和进程管理
- Java之读写锁ReadWriteLock实现
- IDEA的使用,手把手带你快速入门IDEA
- 数据分析应用统计学之分散性与变异性的测量【极差、四分位差、偏态系数、峰态系数、统计指标】
- linux源码acl,Linux自主访问控制机制模块详细分析之posix_acl.c核心代码注释与acl.c文件介绍...
- 2008 r2 server 提权_Windows UAC 本地提权(CVE-2019-1388)
- 3. 空实例对象调用静态方法的结果
- ddl(ddl是什么意思网络语)
- Cesi运行报错AttributeError: can‘t set attribute
- php 完成时钟,PHP 绘制时钟 高洛峰 细说PHP
- OS X El Capitan 10.11开启性能模式
- VBA基本操作(二)——空白单元格填充
- Unity游戏开发客户端面经——数学(初级)
- 数据外连接 LEFT OUT JOIN 的用法
- 辐射强度、辐亮度、辐照度——一文搞定
- Windows 系统镜像下载地址
- 开发工具快速下载地址
- 计算机网口扩展,计算机i/o接口扩展