
算法
black_OX
这个作者很懒,什么都没留下…
展开
-
逻辑中的二进制
位操作在应用层开发上用的很少,一般不会去用它去做数值运算.而在逻辑控制上巧加运用也会发挥强大的特性.这里举一个实例,比如我们只用PHP控制同一页面上的许多元素的开关状态,这个开关状态可以理解成是与非.用笨拙的方法当然也可以实现,一两个元素没什么,如果几十个上百个呢?废话不多说,进入主题.为了方便理解,这里只假设有三个元素需要控制:A, B, C.1, 首先要做的是把他们组合成数原创 2012-06-21 00:18:04 · 677 阅读 · 0 评论 -
从Trie树(字典树)谈到后缀树(10.28修订)
作者:July、yansha。出处:http://blog.youkuaiyun.com/v_JULY_v 。 引言 常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,转载 2014-03-21 15:36:28 · 1052 阅读 · 0 评论 -
从B树、B+树、B*树谈到R 树
作者:July、weedge、Frankie。编程艺术室出品。说明:本文从B树开始谈起,然后论述B+树、B*树,最后谈到R 树。其中B树、B+树及B*树部分由weedge完成,R 树部分由Frankie完成,全文最终由July统稿修订完成。出处:http://blog.youkuaiyun.com/v_JULY_v 。 第一节、B树、B+树、B*树1.前言:动态查找树主要有:二叉查找树转载 2014-03-21 15:33:07 · 1117 阅读 · 0 评论 -
合并排序
现在介绍一个最近才研究的一个排序方法,据说在处理高并发上蛮实用的.该算法是采用分制法的一个非常典型的应用。 合并排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个子序列,每个子序列是有序的。然后再把有序子序列合并为整体有序序列。 将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为2-路归并。原创 2012-06-24 11:24:47 · 776 阅读 · 0 评论 -
排序算法
这里是一些很常见的排序算法:都是用PHP实现的.有选择排序,插入排序,冒泡排序,快速排序,以及二维数组排序.还有一个合并排序并没有在此给出,合并排序另写一篇博文.选择排序function select_sort($arr) { for($i = 0, $count = count($arr); $i < $count; $i++) { $k = $i; for($原创 2012-06-23 11:43:24 · 550 阅读 · 0 评论 -
查找算法
这里暂时收录两个基本的查找算法:顺序查找和二分法顺序查找:function seq_sch($array, $k) { $n = count($array); $array[$n] = $k; //新建一个元素,并将k存放进去 for($i = 0; $i < $n; $i++) { if($array[$i] == $k) { break; } } if($原创 2012-06-23 12:21:02 · 558 阅读 · 0 评论 -
猴子选大王游戏
猴子选大王游戏 (约瑟夫环)一群猴子排成一圈.按1,2,...,n依次排号. 然后从第一只开始数,数到第m只,把它踢出圈,从它后面再开始数. 再数到第m只,把它踢出去..如此不停的进行下去. 直到最后只剩下一只猴子为止,那只猴子就叫大王. 要求编程模拟此过程,输入m,n. 输出最后那个大王的编号.function monkeyKing($n, $m) { $monkeys原创 2012-06-23 12:41:06 · 912 阅读 · 0 评论 -
翻牌游戏
1-52张扑克牌,初始都翻开朝上从2开始, 以倍数为基础, 将2翻一次, 4翻一次, 6翻一次...52翻一次从3开始, 以倍数为基础, 将3翻一次, 6翻一次, 9翻一次...48翻一次从4开始, 以倍数为基础, 将4翻一次, 8翻一次, 13翻一次...48翻一次 .....求最后朝上的牌有哪些class up { protected $max = 52; pr原创 2012-06-23 12:42:45 · 1089 阅读 · 0 评论 -
汉诺塔问题
汉诺塔(又称河内塔)问题是印度的一个古老的传说。开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬到另一根棒上,规定可利用中间的一根棒作为帮助,但每次只能搬一个,而且大的不能放在小的上面。解答结果恰如上题,面对庞大的数字(移动圆片的次数)1844674407370955原创 2012-06-23 12:24:01 · 5353 阅读 · 0 评论 -
左右值无限分类 预排序遍历树算法:modified preorder tree traversal algorithm
这个算法有如下几个数据结构1 lft 代表左 left2 rgt 代表右 right3 lvl 代表所在的层次 level下面这个图是一个典型的结构 我们先看一些使用方法1 查看整个树(A)有多少节点(包含自己)直接看根节点就行了 (right-left+1)/2 = (20-1+1)/2 = 10这个数有10个节点2 查看从节点A到E的路转载 2014-05-23 17:58:43 · 1787 阅读 · 0 评论