
算法
文章平均质量分 68
爱代码也爱生活
吸收别人的精华,记录自己走过的坑,爱好php、java、运维、web前端
展开
-
对称加密与非对称加密及常用算法
对称加密 加密和解密使用相同的密钥,常用的算法有des、aes、idea非对称加密 使用一对密钥,公钥和私钥,常用的算法有rsa,dsa(非对称加密原理:私钥只能由一方安全保管,不能外泄,而公钥则可以发给任何请求它的人。非对称加密使用这对密钥中的一个进行加密,而解密则需要另一个密钥。比如,你向银行请求公钥,银行将公钥发给你,你使用公钥对消息加密,那么只有私钥的持有人--银行才能对你的消息解原创 2016-07-05 17:51:34 · 837 阅读 · 0 评论 -
PHP数据结构之六 PHP栈的应用举例【数制转换和括号匹配算法】
PHP栈的应用举例【数制转换和括号匹配算法】/***栈的应用举例**1.十进制整数转换为二、八、十六进制整数*2.括号匹配问题*/header("content-type:text/html;charset=gb2312");//在PHP数据结构之五 栈的PHP的实现和栈的基本操作可以找到StackLinked类include_once("./StackLi转载 2016-08-08 15:50:38 · 606 阅读 · 0 评论 -
PHP数据结构之七_队列的链式存储和队列的基本操作
PHP数据结构之七 队列的链式存储和队列的基本操作队列1.定义:队列(Queue):也是运算受限的线性表。是一种先进先出(First In First Out ,简称FIFO)的线性表。只允许在表的一端进行插入,而在另一端进行删除。2.队首(front) :允许进行删除的一端称为队首。3.队尾(rear) :允许进行插入的一端称为队尾。4.队列的顺序存储表示5.队列的链转载 2016-08-08 15:58:18 · 1009 阅读 · 0 评论 -
PHP数据结构之八 树与二叉树基本概念
树的基本概念(一)树的定义 树(Tree)是n(n≧0)个结点的有限集合T,若n=0时称为空树,否则:⑴ 有且只有一个特殊的称为树的根(Root)结点;⑵ 若n>1时,其余的结点被分为m(m>0)个互不相交的子集T1, T2, T3…Tm,其中每个子集本身又是一棵树,称其为根的子树(Subtree)。 这是树的递归定义,即用树来定义树,而只有一个结点的树必定仅由根转载 2016-08-08 16:23:33 · 990 阅读 · 0 评论 -
PHP数据结构之九 PHP储存二叉树,二叉树的创建与二叉树的基本操作 遍历二叉树算法
二叉树的创建及基本操作PHP储存二叉树,二叉树的创建与二叉树的基本操作 遍历二叉树算法/***二叉树的创建及基本操作**1.构造方法,初始化建立二叉树*2.按先序遍历方式建立二叉树*3.按先序遍历二叉树*4.先序遍历的非递归算法*5.中序遍历二叉树*6.中序遍历的非递归算法*7.后序遍历二叉树*8.后序遍历非递归算法*9.层次遍历二叉树*转载 2016-08-08 16:31:09 · 2227 阅读 · 0 评论 -
php递归和迭代实现斐波那契数列
<?php//1 1 2 3 5 8 13 21 34 55//迭代function fib($n){ if($n<1) return -1; $a[1]=$a[2]=1; for($i=3;$i<=$n;$i++){ $a[$i]=$a[$i-1]+$a[$i-2]; } return end($a);}//递归function fib2($n){ if($n<1)原创 2016-08-08 17:20:52 · 2556 阅读 · 0 评论 -
php实现单链表的基本操作
<?php//定义链表节点class LinkNode{ public $data=null; public $next=null;}//初始化function init($linkList){ $linkList->data=0;//用来记录链表长度 $linkList->next=null;}//头插法创建链表function createHead(&$linkLi原创 2016-08-08 17:23:38 · 1137 阅读 · 0 评论 -
php实现汉诺塔问题
汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。简而言之,有三根相邻的柱子,标号为A,B,C,A柱子上从下到上按金字塔状叠放着n个不同大小的圆盘,要把所有盘子一个一个移动到柱子B上,并且每次移动同一根柱子上都不能出现大盘子在小盘子上方,请问至少需要多少次移动?原创 2016-08-09 19:50:03 · 2498 阅读 · 1 评论 -
php实现双向队列
队列是一种线性表,按照先进先出的原则进行单向队列:只能从头进,从尾出双向队列:头尾都可以进出<?phpclass Deque{ private $queue=array(); function addFirst($item){//头入队 return array_unshift($this->queue,$item); } function addLast($原创 2016-08-07 19:13:43 · 5547 阅读 · 3 评论 -
php截取中文字符串支持utf8和gbk
截取时注意数据库编码、文件编码、浏览器显示编码是否一致<?php//使用mb_substr截取function msubstr($str, $start=0, $length, $charset="utf-8"){ return mb_substr($str, $start=0, $length, $charset);}//根据function msubstr2($str, $st原创 2016-08-09 13:40:56 · 955 阅读 · 1 评论 -
php实现先序、中序、后序遍历二叉树
二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆<?phpclass Node{ public $value; public $left; public $right;}//先序遍历 根节点 ---> 左子树 ---> 右子树function原创 2016-08-11 13:30:42 · 11944 阅读 · 0 评论 -
php组词算法
<?php//组词算法function diyWords($arr,$m){ $result = array(); if ($m ==1){//只剩一个词时直接返回 return $arr; } if ($m == count($arr)){ $result[] = implode('' , $arr); return $resul原创 2016-08-11 23:07:44 · 3007 阅读 · 1 评论 -
PHP数据结构之五 栈的PHP的实现和栈的基本操作
栈和队列是两种应用非常广泛的数据结构,它们都来自线性表数据结构,都是“操作受限”的线性表。 栈栈在计算机的实现有多种方式:硬堆栈:利用CPU中的某些寄存器组或类似的硬件或使用内存的特殊区域来实现。这类堆栈容量有限,但速度很快;软堆栈:这类堆栈主要在内存中实现。堆栈容量可以达到很大。在实现方式上,又有动态方式和静态方式两种1.定义:栈(Stack):是限制在表的一端进行插入和转载 2016-08-08 15:45:09 · 741 阅读 · 0 评论 -
PHP数据结构之四 一元多项式的相加PHP单链实现
/***一元多项式的表示和相加*一元多项式的表示采用单链表的形式**/header("content-type:text/html;charset=gb2312");//该类可以在--PHP数据结构之三 线性表中的单链表的PHP实现--找到include_once("./SingleLinkedList.class.php");/***一元多项式的相加实现算法:直接转载 2016-08-08 15:28:57 · 731 阅读 · 0 评论 -
php二分查找、顺序查找算法
<?php//二分查找法function binSearch($arr,$search){ $height=count($arr)-1; $low=0; while($low<=$height){ $mid=floor(($low+$height)/2);//获取中间数 if($arr[$mid]==$search){ return $mid;//返回 }elseif(原创 2016-08-07 18:26:45 · 8743 阅读 · 4 评论 -
php 5种方式获取url的后缀名
<?php$url="http://localhost/user/order.php";function get_ext1($url){ return substr(strrchr($url,"."),1);}function get_ext2($url){ $p=pathinfo($url);//Array ( [dirname] => http://localhost/user [原创 2016-08-07 19:56:06 · 6269 阅读 · 1 评论 -
常见排序算法及php实现代码
冒泡排序思路:在要排序的一组数中,对当前还未排好的序列,从前往后对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即,每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换时间复杂度为:O(n2)快速排序思路:选择一个基准元素,通常选择第一个元素或者最后一个元素。通过一趟扫描,将待排序列分成两部分,一部分比基准元素小,一部分大于等于基准元素。此时基原创 2016-08-07 17:43:47 · 697 阅读 · 5 评论 -
php高效遍历目录文件及子目录
如果目录很多,推荐队列方式,递归方式会慢,慢的原因:递归的实现是通过调用函数本身,函数调用的时候,每次调用时要做地址保存,参数传递等<?php//递归方式function read_dir($dir){ $files=array(); $dir_list=scandir($dir); foreach($dir_list as $file){ if($file!='..' && $原创 2016-08-07 20:48:25 · 12539 阅读 · 3 评论 -
php二维数组多字段排序实现mysql order功能
php二维数组多字段排序实现mysql order功能:即按照某个字段排序时如果字段相同,再按照第二个字段排序使用php原生的array_multisort()函数,执行速度会快些且降低自定义函数的依赖,关于array_multisort详细使用 参考:http://blog.youkuaiyun.com/nuli888/article/details/52145187<?phpfunction s原创 2016-08-07 21:50:13 · 3017 阅读 · 0 评论 -
php计算两个文件的相对路径
<?phpfunction getRelativePath($a,$b){ $a_str=$b_str=''; for($i=0;$i<strlen($b);$i++){ if($a[$i]!=$b[$i]){ $a_str=substr($a,$i); $b_str=substr($b,$i); break; } } $num=substr_count($b_原创 2016-08-07 23:15:18 · 693 阅读 · 8 评论 -
php实现顺序栈的基本操作
<?phpclass Stack{ //用默认值直接初始化栈了,也可用构造方法初始化栈 private $top = -1; private $maxSize = 3; private $stack = array(); //入栈 public function push($elem){ if($t原创 2016-08-07 23:23:02 · 822 阅读 · 3 评论 -
链表、数组和堆栈、队列详解
数据结构:是指相互之间存在一种或多种特定关系的数据元素的集合。听起来是不是很抽象,简单理解:数据结构就是描述对象间逻辑关系的学科。比如:队列就是一种先进先出的逻辑结构,栈是一种先进后出的逻辑结构,家谱是一种树形的逻辑结构!(初学数据结构的时候很不理解为什么有“栈”这个东西;队列很容易理解---无论购物就餐都需要排队;栈可以认为就是个栈道---只允许一个人通过的小道,而且只能从一端进入,然后再从这端转载 2016-07-05 15:27:28 · 2085 阅读 · 0 评论 -
PHP数据结构之一:PHP数据结构基本概念—数据结构
学习任何一种技术都应该先清楚它的基本概念,这是学习任何知识的起点!本文是讲述数据结构的基本概念,适合对数据结构已经有一定基础的程序员,更是适合想要学习数据结构的code一族!让我们开始PHP数据结构的篇章吧!一、基本概念(一)编写解决实际问题的程序的一般过程:1.如何用数据形式描述问题,即将问题抽象为一个数学模型;2.问题所涉及到的数据量的大小及数据之间的关系;转载 2016-08-08 14:40:47 · 5398 阅读 · 0 评论 -
PHP数据结构之二 线性表中的顺序表的PHP实现
线性表(一)基本特点:最基本、最简单、最常用的一种数据结构在这种结构中:1.存在一个唯一的被称为“第一个”的数据元素;2.存在一个唯一的被称为“最后一个”的数据元素;3.除第一个元素外,每个元素均有唯一一个直接前驱;4.除最后一个元素外,每个元素均有唯一一个直接后继。 (二)定义:线性表(Linear List) :是由n(n≧0)个数据元素(结点)a1,a2,转载 2016-08-08 14:56:55 · 1486 阅读 · 0 评论 -
PHP数据结构之三 线性表中的单链表的PHP实现
线性表的链式存储:用一组任意的存储单元存储线性表中的数据元素。用这种方法存储的线性表简称线性链表。链式存储线性表的特点:存储链表中结点的一组任意的存储单元可以是连续的,也可以是不连续的,甚至是零散分布在内存中的任意位置上的。链表中结点的逻辑顺序和物理顺序不一定相同。PHP实现单链表/** *单链表的基本操作 *1.初始化单链表 __construct() *2.清空单链转载 2016-08-08 15:16:29 · 539 阅读 · 0 评论 -
memcache一致性hash算法实战
关于memcache一致性hash算法原理:http://blog.youkuaiyun.com/nuli888/article/details/52128999使用memcache集群时,客户端"一致性hash算法"设置:第一种:使用memcahe扩展时如果想应用一致性Hash算法修改php.ini添加:[Memcache] Memcache.allow_failov原创 2016-08-05 14:46:16 · 3657 阅读 · 1 评论