随笔分类 - 数据结构
Data Structure
摘要:1 /** 2 * 链表元素结点类 3 */ 4 class Node { 5 public $pre = NULL; // 前驱 6 public $next = NULL; // 后继 7 public $data = NULL; // 结点值 8 public function __Construct($data) { ...
阅读全文
摘要:1.单词——文档矩阵 单词-文档矩阵是表达两者之间所具有的一种包含关系的概念模型,图3-1展示了其含义。图3-1的每列代表一个文档,每行代表一个单词,打对勾的位置代表包含关系。 从纵向即文档这个维度来看,每列代表文档包含了哪些单词,比如文档1包含了词汇1和词汇4,而不包含其它单词。从横向即单词这个维
阅读全文
摘要:为了快速随机存取文件中的记录,可以使用索引结构。不管是从字面意思来讲,还是从生活的其他领域来讲,索引都可以被解释为快速定位。 一.聚集索引和非聚集索引 1.聚集索引:包含记录的文件按照某个搜索码指定的顺序排序,那该搜索码对应的索引称为聚集索引;也称为主索引; 2.非聚集索引:搜索码指定的顺序与文件中
阅读全文
摘要:分块查找法要求将列表组织成以下索引顺序结构: 首先将列表分成若干个块(子表)。一般情况下,块的长度均匀,最后一块可以不满。 每块中元素任意排列,即块内无序,但块与块之间有序。 构造一个索引表。其中每个索引项对应一个块并记录每块的起始位置,和每块中最大 关键字(或最小关键字)。索引表按关键字有序排列。
阅读全文
摘要:从折半查找中可以看出,折半查找的查找效率还是不错的。可是为什么要折半呢?为什么不是四分之一、八分之一呢?打个比方,在牛津词典里要查找“apple”这个单词,会首先翻开字典的中间部分,然后继续折半吗?肯定不会,对于查找单词“apple”,我们肯定是下意识的往字典的最前部分翻去,而查找单词“zero”则
阅读全文
摘要:什么是斐波那契查找 斐波那契数列,又称黄金分割数列,指的是这样一个数列: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)。
阅读全文
摘要:马踏棋盘算法(骑士周游问题) 定义:将马随机放在国际象棋的8×8棋盘Board[0~7][0~7]的某个方格中,马按走棋规则进行移动。要求每个方格只进入一次,走遍棋盘上全部64个方格。 算法:如图: 用一个二维数组来存放棋盘,假设马儿的坐标为(x,y),那么可供选择的下一个位置共有8种可能。我们所要
阅读全文
摘要:在一般的数据结构的书中,树的那章后面,著者一般都会介绍一下哈夫曼(HUFFMAN) 树和哈夫曼编码。哈夫曼编码是哈夫曼树的一个应用。哈夫曼编码应用广泛,如 JPEG中就应用了哈夫曼编码。 首先介绍什么是哈夫曼树。哈夫曼树又称最优二叉树, 是一种带权路径长度最短的二叉树。所谓树的带权路径长度,就是树中
阅读全文
摘要:上一篇文章,我介绍了 字符串匹配的KMP算法 但是,它并不是效率最高的算法,实际采用并不多。各种文本编辑器的” 查找” 功能(Ctrl+F),大多采用 Boyer-Moore 算法。 下面,我根据 Moore 教授自己的例子来解释这种算法。 1. 假定字符串为”HERE IS A SIMPLE EX
阅读全文
摘要:一般字符串匹配过程 KMP算法是字符串匹配算法的一种改进版,一般的字符串匹配算法是:从主串(目标字符串)和模式串(待匹配字符串)的第一个字符开始比较,如果相等则继续匹配下一个字符, 如果不相等则从主串的下一个字符开始匹配,直到模式串被匹配完,则匹配成功,或主串被匹配完且模式串未匹配完,则匹配失败。匹
阅读全文
摘要:数据结构的概述: 数据类型:程序语言中变量所能表示并存储的数据种类。 数据实体:在一种数据类型中的所有可能元素的集合。 数据结构:数据实体中元素之间的关系,包括数据的存储结构和运算。 算法:为了完成某项特定的工作所设计出的一连串用来说明工作是如何被完成的步骤。 算法必须满足的5个条件: 1. 输入:具有0个或多个输入数据; 2. 输出:具有一个或多个输出结果; 3. 定义明确:每一个步骤的语句必须很明确。 4. 有限的步骤:算法必须在有限的步骤内结束。 5. 有效性:算法中的每一个步骤必须是基本的指令(即使是使用纸和笔也可以完成计...
阅读全文