数据结构
文章平均质量分 79
1*null
喜欢可爱的女孩子,喜欢学习,喜欢敲代码
展开
-
有,无向图的简单矩阵创建
无向图的领接矩阵为对称矩阵,有向图的领接矩阵可能是对称的,也可能是不对称的,有向图的领接矩阵和无向图相似。无向图的领接矩阵。#include typedef struct{ int arcs[20][20]; int vex[100]; int vexnum; int arcnum; }AdjMatrix;void Create(AdjMatrix *G){ int i,j原创 2016-07-27 16:24:22 · 1237 阅读 · 0 评论 -
无向图的领接表
无向图的领接表。#include #include typedef struct EdgeNode{ // 边表结点 int adjvex; // 领接点域,存储该顶点对应的下标 struct EdgeNode *next; // 链域,指向下一个领接点 }EdgeNode;typedef struct Verte原创 2016-07-27 16:32:55 · 1233 阅读 · 0 评论 -
图的十字链表的创建
图的十字链表。#include #include typedef struct EdgeNode { int tailvex; // 弧的起点下标 int headvex; // 弧的终点下标 struct EdgeNode *headlink,*taillink; }EdgeNode;typedef struct VertexNode{ i原创 2016-07-27 16:38:07 · 406 阅读 · 0 评论 -
B-树
我们知道数据库中的索引查找主要基于hash表或者B+树,但我们知道从算法逻辑上二叉查找树的查询速度和比较次数都是最少的,其时间复杂度为O(logN),但是我们为什么不考虑在数据库索引查找时使用二叉树呢?这里我们就不得不考虑一个现实问题:磁盘IO。数据库索引是存储在磁盘上的,当数据量比较大的时候,索引的大小可能有几个G甚至更多。当我们利用索引查找的时候,能把整个索引全部加载到内存吗?显然不可能,能做...转载 2018-03-10 17:52:28 · 226 阅读 · 0 评论 -
B+树
前面我们介绍了B-树(B树),现在我们来了解一下B+树。B+树是基于B-树的一种变体,有着比B-树更高的查询性能,他们有着一些相同点,但是B+树也具有一些新特征。一个m阶的B+树具有以下几个特征:1. 有k个子树的中间节点包含有k个元素(B树是k-1个元素),每个元素不保存数据,只是来索引,所有数据都保存在叶子节点。2. 所有的叶子节点中包含了全部元素的信息,及指向这些元素记录的指针,且叶子节点本...转载 2018-03-10 22:39:39 · 224 阅读 · 0 评论 -
MySQL索引背后的数据结构和算法原理
本文主要分为三部分。第一部分主要从数据结构及算法理论层面讨论MySQL数据库索引的数理基础。第二部分结合mysql数据库中MylSAM和InnoDB数据库存储引擎中索引的架构实现讨论聚集索引,非聚集索引及覆盖索引。第三部分根据上面的理论基础,讨论mysql中高性能使用索引的策略。数据结构及算法基础索引的本质mysql官方文档对索引的定义为:索引(Index)是帮助mysql高效的获取数据的数据结构...转载 2018-03-11 16:20:31 · 348 阅读 · 0 评论 -
LRU算法实现
LRU(最近最久未使用)当缓存满了的时候,我们要淘汰出最久未被使用的数据。1.用一个数组来存储数据,给每一个数据项标记一个访问时间戳,每次插入新数据项的时候,先把数组中存在的数据项的时间戳自增,并将新数据项的时间戳置为0并插入到数组中。每次访问数组中的数据项的时候,将被访问的数据项的时间戳置为0。当数组空间已满时,将时间戳最大的数据项淘汰。这需要每次遍历hash表,不是很好。publ...转载 2018-08-20 10:49:31 · 1717 阅读 · 0 评论