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

一、文件夹遍历

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 "

";

echo '' . str_repeat("--", $level) . $subPath . '';

self::allFile($subPath, $level++);

} else {

echo "

";

echo str_repeat("--", $level) . $subPath;

}

}

}

}

} else {

echo "{$path} is not a available dir";

}

}

二、九九乘法表

function create()

{

for ($i = 1; $i <= 9; $i++) {

for ($j = 1; $j <= $i; $j++) {

echo $j . '*' . $i . '=' . $i * $j . PHP_EOL;

}

echo "
";

}

}

三、无限极递归分类

①、递归算法

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;

}

②、引用算法

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;

}

四、冒泡排序

function bubbleSort($arr)

{

$len = count($arr);

for($i=1; $i

for($k=0; $k

if($arr[$k] > $arr[$k+1]) {

$tmp=$arr[$k+1];

$arr[$k+1]=$arr[$k];

$arr[$k]=$tmp;

}

}

}

return $arr;

}

五、选择排序

function selectSort($arr)

{

$len=count($arr);

for($i=0; $i

$p = $i;

for($j=$i+1; $j

if($arr[$p] > $arr[$j]) {

$p = $j;

}

}

if($p != $i) {

$tmp = $arr[$p];

$arr[$p] = $arr[$i];

$arr[$i] = $tmp;

}

}

return $arr;

}

六、插入排序

function insertSort($arr)

{

$len=count($arr);

for($i=1; $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;

}

七、快速排序

function quickSort($arr) {

$len = count($arr);

if($len <= 1) return $arr;

$base_num = $arr[0];

$left_array = [];

$right_array = [];

for($i=1; $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常见算法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

php 3 3公派算法代码,PHP常见算法合集代码实例相关推荐

  1. php最常见代码,PHP常见算法合集代码实例

    许多人都说 算法是程序的核心,一个程序的好于差,关键是这个程序算法的优劣,下面是一些常用的算法和实例,大家可以好好学习下 一.文件夹遍历<?php function allFile($path ...

  2. 【算法】二叉树常见算法

    [算法]-- 二叉树常见算法 目录 一.单值二叉树 二.相同的树 三.另一棵树的子树 四.对称二叉树 五.判断完全二叉树 一.单值二叉树 1. 问题描述 如果二叉树每个节点都具有相同的值,那么该二叉树 ...

  3. 算法设计之常见算法策略

    1 算法简介 1.1 算法的定义 ​ 算法(Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列,其中每一条指令表示一个或多个操作. 1.2 算法的特性 ​ 1.有穷性(Finite ...

  4. 【算法大杂烩】常见算法的归类和总结——消息摘要算法

    在上一篇文章  [算法大杂烩]常见算法的归类和总结--非对称加密算法  中我们简要介绍了常见的非对称加密算法的相关知识.这次我们乘胜追击,介绍[信息摘要算法], 通过本文的阅读,你可以了解到以下知识: ...

  5. gitl更新最近代码_常见的蓝屏代码以及解决方法

    大家好,今天分享一篇来自小白系统官网(xiaobaixitong.com)的图文教程.计算机蓝屏是常见的系统故障.经历过计算机蓝屏的朋友知道,当计算机出现蓝屏时,蓝屏上会出现一串代码.此代码字符串也具 ...

  6. git 强制更新远程_版本控制管理工具git的常见指令合集

    今天小千就来给大家介绍一下git中比较常见的指令合集,方便大家使用git,建议收藏起来方便日后查阅. 一.常见的命令 git help <command> # 显示command的help ...

  7. 1 Go语言开发环境搭建详细教程+go常见bug合集【Go语言教程】

    Go语言开发环境搭建[Win.Linux.Mac] 1 SDK下载 官网地址:golang.org,因为一些原因国内可能无法访问.可以使用下面第二个链接. 国内地址访问:https://golang. ...

  8. 除夕最炫烟花代码----跨年必备合集【含动态展示效果及网盘代码下载】

    写在前面 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家:人工智能学习网站 跨年烟花目录 写在前面 1.HTML5夜景放烟花绽放动画效果 2.指哪打哪的HTML5+J ...

  9. java java算法题目_java常见算法题目

    1: JAVA经典算法40题 2: [程序1] 题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少? 3 ...

最新文章

  1. 读书笔记之:Boost程序库完全开发指南(Ch1-4)
  2. 代码注释(图案:小狗)
  3. cf卡序列号修改工具_王者荣耀无需Root修改荣耀战区软件和方法分享 全国地区可任意修改...
  4. 小狗扫地机器人与石头_石头扫地机器人 T7:使用一周后的真实测评报告
  5. python main调试_在main.py中调试显示这个是什么问题
  6. 微信小程序音量调节插件
  7. Kafka 过期数据清理 详解
  8. C语言找n以上最小质数,[原创]求质数(C语言描述)
  9. 股票模拟交易php,股票模拟图,股票交易记录生成器
  10. 设计师:设计师的知识储备之异形曲面设计 巴洛克、洛可可 设计理论(三角形构图、平衡式构图、三分法构图 、九宫格构图)之详细攻略
  11. PKPM学习:关于“悬空柱”的问题
  12. Adobe Photoshop CC2018软件安装教程
  13. 网络层的拥塞控制与服务质量
  14. python逻辑回归训练预测_[Python] 机器学习笔记 基于逻辑回归的分类预测
  15. 计算机对无人机的影响,无人机中的人工智能和自主性你了解多少
  16. 安装numpy时报错
  17. Firefox配置阿里云DNS方法
  18. AIoT人工智能物联网
  19. 软件测试--白盒测试、黑盒测试、α测试、β测试
  20. pycharm 全部文件搜索关键字(全局文件搜索)

热门文章

  1. 用于自动泊车的鸟瞰图的边缘线的语义SLAM系统
  2. 剑指offer:面试题39. 数组中出现次数超过一半的数字
  3. 原生CSS设置预加载图片之前的默认背景图
  4. 在CentOS 6.8 x86_64上安装nghttp2最新版及让curl具有http2特性
  5. Unity制作2D动作平台游戏视频教程
  6. NBIOT-NPSS/NSS/NPBCH的资源位置
  7. 读书:历史 -- 奥斯曼帝国六百年
  8. linux进程间通信:system V 信号量 生产者和消费者模型编程案例
  9. 【博客美化】公告栏显示个性时间
  10. 词法作用域和动态作用域