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

一、文件夹遍历<?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 "

";

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

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

} else {

echo "

";

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 "
";

}

}

三、无限极递归分类

①、递归算法<?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

for($k=0; $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

$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;

}

六、插入排序<?php

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;

}

七、快速排序<?php

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最常见代码,PHP常见算法合集代码实例相关推荐

  1. php 3 3公派算法代码,PHP常见算法合集代码实例

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

  2. 《安富莱嵌入式周报》第297期:开源生物医学成像系统,可肺部成像,C算法合集500例,突出极致运算速度,数值方法书籍,芯片级激光隔离,3D打印机固件Marlin

    往期周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - P ...

  3. 算法合集之《信息学中守恒法的应用》(不错的文章保存一下)

    算法合集之<信息学中守恒法的应用>(不错的文章保存一下) by 三江小渡 [摘要]本文提出和总结了"守恒法",以及它在信 息学竞赛中的一些应用.守恒的本质是寻找变化中的 ...

  4. 前端常见手写面试题合集

    实现一个函数判断数据类型 function getType(obj) {if (obj === null) return String(obj);return typeof obj === 'obje ...

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

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

  6. 程序员小灰漫画算法合集

    2017合集 2018合集 2019合集 2020合集

  7. 2014年880个合集Android_实例子源代码文件下载地址合集-2014

    *************************************************************************************************** ...

  8. php 常见算法合集

    目录 一.文件夹遍历 二.九九乘法表 三.无限极递归分类 四.冒泡排序 五.选择排序 六.插入排序 七.快速排序 一.文件夹遍历 <?php function allFile($path = _ ...

  9. 互联网中常见的推荐算法合集

    在上网购物.看小说.买电影票的时候,都会遇到各种各样的推荐,给我们推荐一些我们曾经买过或收藏过的同类型产品,或者是推荐一些我们看过的小说题材相同的小说.那这些产品推荐都是如何实现的呢?我们今天就来聊聊 ...

最新文章

  1. 【面经】超硬核面经,已拿蚂蚁金服Offer!!
  2. R语言使用ggplot2包的快速可视化函数qplot绘制散点图(设置数据点的形状、大小)实战
  3. 2017年前端工作小结,个人踩坑之旅,前端学习者的杂谈
  4. python爬虫scrapy安装_Python爬虫:Scrapy框架的安装和基本使用
  5. ERROR 1044 (42000): Access denied for user ''@'localhost' to database
  6. 问题记录-python连接远程主机redis数据库时无法成功连接
  7. 从ELK到EFK演进
  8. 函数可以作为Javascript对象(哈希表)的键吗
  9. php xss漏洞扫描工具,XSS漏洞扫描器工具:XSpear
  10. 撰写商业计划书的一些误区和建议
  11. 非常量引用的初始值必须是左值的处理方法
  12. 手机自动下载当天voa听力
  13. utf-8字符集字段按照中文拼音排序
  14. 无理数究竟是什么?连续性公理的产物?——读戴德金之二
  15. DEV C++设置背景音乐
  16. 【渝粤教育】电大中专电商运营实操 (4)作业 题库
  17. IPD的决策评审CDP(2):因地制宜,因时而动
  18. java发送邮件格式_java使用main函数进行邮件发送怎样设置邮件格式
  19. 【历史上的今天】7 月 4 日:第一本电子书问世;磁条卡的发明者出生;掌上电脑先驱诞生
  20. og协议-有利于SNS网站分享

热门文章

  1. 巴曙松:收到了Roger送的BCH,已全捐给慈善基金
  2. java系统高并发解决方案
  3. 设计模式(六)命令模式
  4. 基本CSS选择器,复合选择器,后代选择器
  5. java jvm学习笔记二(类装载器的体系结构)
  6. 《Pro ASP.NET MVC 3 Framework》学习笔记之十七【示例项目SportsStore】
  7. 仿Gin搭建自己的web框架(五)
  8. Javascript 绑定事件和 this理解
  9. effective java读书笔记5:避免创建不必要的对象
  10. Caused by: java.lang.NoClassDefFoundError: org/objectweb/asm/Type