随笔分类 -  2018~2022归档 / 数据结构

摘要:1多路平衡查找 1.1分级存储 计算机的二级存储系统:内存和外存 内存容量小速度快,外存容量大速度慢。 减少I/O:内存与外存的访问速度相差悬殊,故应该尽可能地减少不同存储级别之间地数据传输。 外存的特性:读取物理地址连续的一千个字节,与读取单个字节花费的时间几乎没有区别。 所以,系统从磁盘读取数据 阅读全文
posted @ 2020-10-18 20:59 CofJus 阅读(374) 评论(0) 推荐(0)
摘要:1.结构 单链表和向量实现难度低,维护容易却查找效率低,AVL树、红黑树等高级数据结构效率高但较为复杂,难以维护。 SkipList的实现较红黑树简单得多,而且同时保证了查询和维护等操作平均仅需O(logn)时间。 不难看出,跳表的结构大致可以被描述为:带索引的有序的链表 底层的链表存储了所有数据, 阅读全文
posted @ 2020-09-02 23:10 CofJus 阅读(462) 评论(0) 推荐(0)
摘要:并查集(Disjoint Sets),直译即不相交集。 等价关系 离散数学中对等价关系的定义:满足自反性、对称性和传递性的关系。 集合A,∀(a,b),a,b∈A,满足aRb,则称R为A上的关系,若R满足以上三种性质,则为等价关系。 数学上的定义不必过多解释,只需知道,等价关系是用来对集合中的元素分 阅读全文
posted @ 2020-06-01 20:06 CofJus 阅读(1184) 评论(0) 推荐(1)
摘要:1.二叉搜索树(BST,Binary Search Tree) 顺序性:对于任意节点r,其左子树中的所有节点均<=r,其右子树的所有节点均>=r。 单调性:BST的中序遍历序列为单调递增序列。 ↑BST中的节点与中序编列中的节点一一对应,上下对齐 查找算法:类似二分查找,比较大小,定位节点。 1 t 阅读全文
posted @ 2020-01-04 22:06 CofJus 阅读(487) 评论(0) 推荐(0)
摘要:1.图的相关概念 图:G = (V,E),集合V中的元素被称为顶点,集合E中的元素是集合V中的某一对顶点(u,v)之间的边。 约定集合V和集合E均为有限集,其规模分别记为n = | V |,e = | E |。 边:顶点之间存在的某种关系就是边。可分为有向边和无向边。若边(u,v)中的顶点u和v的次 阅读全文
posted @ 2019-11-09 20:21 CofJus 阅读(557) 评论(0) 推荐(0)
摘要:无序对:对于二元集合{a,b},由于元素之间没有次序,称{a,b}为无序对,记为(a,b)。 有序对:由两个元素x和y(允许x=y)按一定顺序排列成的二元组叫做一个有序对,记作<x,y>,其中x是它的第一元素,y是它的第二元素。 无序积:设A,B为集合,则称{(a,b)| a∈A∧b∈B}为A与B的 阅读全文
posted @ 2019-11-09 20:20 CofJus 阅读(2620) 评论(0) 推荐(1)
摘要:1.散列表 描述:通过适当的散列函数在词条的关键码与向量单元的秩之间建立起映射关系的数据结构,也叫哈希表。 完美散列:在时间和空间性能上都达到最优的散列。 散列的查找和删除:根据散列函数可以在O(1)的时间里确定要查找/删除的关键码在散列函数中的地址。 空间利用率:散列表的查找和删除可以在时间复杂度 阅读全文
posted @ 2019-02-28 15:39 CofJus 阅读(838) 评论(0) 推荐(0)
摘要:1.树 描述:自由树是一个连通的,无回路的无向图。 树不是一种线性结构,但它具有一定的线性特征。 树也可以这样定义:树是由根结点和若干颗子树构成的。树是由一个集合以及在该集合上定义的一种关系构成的。集合中的元素称为树的结点,所定义的关系称为父子关系。父子关系在树的结点之间建立了一个层次结构。在这种层 阅读全文
posted @ 2019-02-02 15:12 CofJus 阅读(711) 评论(0) 推荐(1)
摘要:1.描述:队列也是一种表,遵循先进先出的规则(FIFO)。 队列头称为队头(front),可以取出元素,队列尾称为队尾(rear),允许插入元素。 2.队列的实现 链表实现和数组实现 对于链表实现来说,和栈类似,所有链表的操作都是合法的 主要看队列的数组实现 3.队列ADT 以上是队列支持的接口 4 阅读全文
posted @ 2019-01-27 18:24 CofJus 阅读(268) 评论(0) 推荐(0)
摘要:C++STL中的vector模板类非常好用,有效解决了数组大小固定的问题。 而vector本身是封装好的,一般使用时只需要知道vector提供的接口即可,而它的内部是怎样实现的一直没有去了解。 1.秩:一个元素的秩就是它的前驱元的个数(它的前面的元素的个数),各元素的秩互异。 通过秩(记为r)可以唯 阅读全文
posted @ 2019-01-27 16:36 CofJus 阅读(1164) 评论(0) 推荐(0)
摘要:1.描述:实质是一种受到限制的表,即插入删除只能在表的末端,能够实现LIFO(后进先出) 2.栈的实现 链表实现(链栈) 数组实现(顺序栈) 3.链栈 创建一个空栈 测试栈是否为空 从栈顶弹出元素 返回栈顶元素(不弹出,不改变栈顶指针),遇到空栈将返回异常 清空栈(同时销毁物理内存) 压栈 遍历栈 阅读全文
posted @ 2018-12-31 16:55 CofJus 阅读(304) 评论(0) 推荐(0)
摘要:1.描述:不连续存储的表,可以把链表看成一个数组,数组元素是一个个结构体,这些结构体之间通过指针连接 2.优点: 利用不连续的存储空间,提高内存使用效率 避免删除和插入的线性开销 对比数组,大小不固定,可以扩展 3. 缺点:查找效率低 4. 定义一个单向链表 5.检测链表是否为空 对于一个单向链表, 阅读全文
posted @ 2018-12-29 18:54 CofJus 阅读(421) 评论(0) 推荐(0)