随笔分类 -  算法

algorithm
摘要:1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。 从纵向即文档这个维度来看,每列代表文档包含了哪些单词,比如文档1包含了词汇1和词汇4,而不包含其它单词。从横向即单词这个维 阅读全文
posted @ 2017-07-04 10:52 lpfuture 阅读(841) 评论(0) 推荐(0) 编辑
摘要:为了快速随机存取文件中的记录,可以使用索引结构。不管是从字面意思来讲,还是从生活的其他领域来讲,索引都可以被解释为快速定位。 一.聚集索引和非聚集索引 1.聚集索引:包含记录的文件按照某个搜索码指定的顺序排序,那该搜索码对应的索引称为聚集索引;也称为主索引; 2.非聚集索引:搜索码指定的顺序与文件中 阅读全文
posted @ 2017-07-04 10:34 lpfuture 阅读(1614) 评论(0) 推荐(0) 编辑
摘要:分块查找法要求将列表组织成以下索引顺序结构: 首先将列表分成若干个块(子表)。一般情况下,块的长度均匀,最后一块可以不满。 每块中元素任意排列,即块内无序,但块与块之间有序。 构造一个索引表。其中每个索引项对应一个块并记录每块的起始位置,和每块中最大 关键字(或最小关键字)。索引表按关键字有序排列。 阅读全文
posted @ 2017-07-04 10:20 lpfuture 阅读(3469) 评论(0) 推荐(0) 编辑
摘要:从折半查找中可以看出,折半查找的查找效率还是不错的。可是为什么要折半呢?为什么不是四分之一、八分之一呢?打个比方,在牛津词典里要查找“apple”这个单词,会首先翻开字典的中间部分,然后继续折半吗?肯定不会,对于查找单词“apple”,我们肯定是下意识的往字典的最前部分翻去,而查找单词“zero”则 阅读全文
posted @ 2017-07-03 18:14 lpfuture 阅读(1395) 评论(0) 推荐(0) 编辑
摘要:什么是斐波那契查找 斐波那契数列,又称黄金分割数列,指的是这样一个数列:1、1、2、3、5、8、13、21、····,在数学上,斐波那契被递归方法如下定义:F(1)=1,F(2)=1,F(n)=f(n-1)+F(n-2) (n>=2)。该数列越往后相邻的两个数的比值越趋向于黄金比例值(0.618)。 阅读全文
posted @ 2017-07-03 18:11 lpfuture 阅读(19781) 评论(3) 推荐(2) 编辑
摘要:马踏棋盘算法(骑士周游问题) 定义:将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。 算法:如图: 用一个二维数组来存放棋盘,假设马儿的坐标为(x,y),那么可供选择的下一个位置共有8种可能。我们所要 阅读全文
posted @ 2017-07-03 15:54 lpfuture 阅读(4043) 评论(0) 推荐(0) 编辑
摘要:上一篇文章,我介绍了 字符串匹配的KMP算法 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的” 查找” 功能(Ctrl+F),大多采用 Boyer-Moore 算法。 下面,我根据 Moore 教授自己的例子来解释这种算法。 1. 假定字符串为”HERE IS A SIMPLE EX 阅读全文
posted @ 2017-06-29 12:17 lpfuture 阅读(224) 评论(0) 推荐(0) 编辑
摘要:一般字符串匹配过程 KMP算法是字符串匹配算法的一种改进版,一般的字符串匹配算法是:从主串(目标字符串)和模式串(待匹配字符串)的第一个字符开始比较,如果相等则继续匹配下一个字符, 如果不相等则从主串的下一个字符开始匹配,直到模式串被匹配完,则匹配成功,或主串被匹配完且模式串未匹配完,则匹配失败。匹 阅读全文
posted @ 2017-06-29 11:25 lpfuture 阅读(487) 评论(0) 推荐(0) 编辑
摘要:一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在 阅读全文
posted @ 2016-08-22 17:30 lpfuture 阅读(208052) 评论(19) 推荐(95) 编辑
摘要:1 <?php 2 /*=============裴波那契数列=============*/ 3 //使用递归 4 function fibonacci_recursive($n){ 5 if($n==1||$n==2){ 6 return 1; 7 }else{ 8 return fibonacci($n-1)+fibonacci($n-2); 9 }10 }11 12 //不使用递归13 function fibonacci($n){14 $base1 = 1;15 $base2 = 2;16 if($n=... 阅读全文
posted @ 2013-03-07 15:02 lpfuture 阅读(212) 评论(0) 推荐(0) 编辑
摘要:我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当做是第一个丑数。求按从小到大的顺序的第1500个丑数下面是一道在网络上广为流传的面试题,据说google曾经采用过这道题。 所谓一个数m是另一个数n的因子,是指n能被m整除,也就是n % m == 0。根据丑数的定义,丑数只能被2、3和5整除。也就是说如果一个数如果它能被2整除,我们把它连续除以2;如果能被3整除,就连续除以3;如果能被5整 除,就除以连续5。如果最后我们得到的是1,那么这个数就是丑数,否则不是。基于前面的分析,我们可以写出如下的函数来判断一... 阅读全文
posted @ 2013-03-07 14:30 lpfuture 阅读(287) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /** 3 *在n行n列的棋盘上,如果两个皇后位于棋盘上 4 *的同一行或者同一列或者同一对角线上,则称 5 *他们为互相攻击。现要求找出使n元棋盘上的n 6 *个皇后互不攻击的所有布局。 7 */ 8 //判断第k个皇后放在k行的x列上会不会有冲突 9 function place($k,$x){10 for($i=0;$i<$k;$i++){11 if(abs($k-$i)==abs($x[$k]-$x[$i])||$x[$k]==$x[$i]){12 return false;13 }14 }... 阅读全文
posted @ 2013-03-04 18:05 lpfuture 阅读(172) 评论(0) 推荐(0) 编辑
摘要:1 '; 17 }else{ 18 hanoi($from,$aux,$to,$num-1); 19 echo '第'.$counter++.'步:'.$num.'铁盘从'.$from.'桩移至'.$to.'桩'; 20 hanoi($aux,$to,$from,$num-1); 21 } 22 } 23 $from = 'A';... 阅读全文
posted @ 2013-03-04 14:43 lpfuture 阅读(200) 评论(0) 推荐(0) 编辑
摘要:1,2,3,4,5五个数组成一个两位数和一个三位数,要使乘积最大,应该是哪两个数,要使乘积最小呢? 1 <?php 2 $min=10000; 3 $max=0; 4 $max_a = 0; 5 $max_b = 0; 6 $min_a = 0; 7 $min_b = 0; 8 for($a=1;$a<6;$a++){ 9 for($b=1;$b<6;$b++){10 if($b!=$a){11 for($c=1;$c<6;$c++){12 if($c!=$b&&$c!=$a){13 ... 阅读全文
posted @ 2013-03-01 15:43 lpfuture 阅读(185) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /** 3 约瑟夫环:递归算法 4 假设下标从0开始,0,1,2 .. m-1共m个人,从1开始报数,报到k则此人从环出退出,问最后剩下的一个人的编号是多少? 5 现在假设m=10 6 0 1 2 3 4 5 6 7 8 9 k=3 7 8 第一个人出列后的序列为:出列人:2 9 0 1 3 4 5 6 7 8 910 即:11 3 4 5 6 7 8 9 0 1(*)12 我们把该式转化为:13 0 1 2 3 4 5 6 7 8 (**)14 则你会发现: ((**)+3)%10则转化为(*)式了15 16 第二个出列人2,其实就是转化前的(2+3)%10=... 阅读全文
posted @ 2013-02-25 10:45 lpfuture 阅读(268) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 /** 3 sequence search 4 从第一个元素开始,依次同每个元素比较 5 */ 6 function seq_search($arr,$n,$k){ 7 for($i=0;$i<$n;$i++){ 8 if($arr[$i]==$k){ 9 break;10 }11 }12 if($i<$n){13 return $i;14 }else{15 return -1;16 }17 }18 19 /*... 阅读全文
posted @ 2013-02-25 10:24 lpfuture 阅读(157) 评论(0) 推荐(0) 编辑
摘要:1 <?php 2 error_reporting(E_ALL); 3 /*=========冒泡排序 bubble sort===========*/ 4 /*以升序为例 */ 5 /*每次比较相邻两个元素,小数往前放,大数往*/ 6 /*后放,一次外围循环完成后最大的数就排在了*/ 7 /*最后边 */ 8 /*========================================*/ 9 function bubble_... 阅读全文
posted @ 2013-02-25 10:22 lpfuture 阅读(220) 评论(0) 推荐(0) 编辑