
数据结构
文章平均质量分 78
BigFatSheep
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法的基本概念
程序设计 = 数据结构 + 算法数据结构数据结构中的数据早期计算机用于数值计算,而现在的数据结构是一门研究非数值计算的程序设计问题中的操作对象,以及它们之间的关系和操作等相关问题的学科。数据:描述客观事物的符号,计算机可以操作的对象,能够被计算机识别并输入给计算机处理的符号集合。包括整形等数值类型,还有声音、图像、视频等非数值类型。数据元素:组成数据的有一定意义的基本单位,在计算机中通常作为整体处理原创 2018-03-31 13:21:44 · 953 阅读 · 0 评论 -
Range minimum & Lowest common ancestors
If we can solve one of these two problems in space S(n) and query time Q(n), then the same is true for the other problem.We can solve the two problems with O(n log n) space and O(1) query time (fair...原创 2018-06-13 15:31:25 · 216 阅读 · 0 评论 -
Range queries & Range trees
Range queries给一些空间中的数据点,查询(query)在一定查询范围(query region)中的累积信息(aggregate information)可以计算点点数量,列出点,最高优先级点,平均数,方差等Decomposable Range QueriesA range query is decomposable if there is some binary op...原创 2018-06-13 14:20:24 · 1465 阅读 · 0 评论 -
Prefix tree, Tries, Patricia tree, Suffix trees
Prefix tree给一个word和一个words的list,L。判断W是否在L中。用一棵根结点是word的前缀的前缀树来表示。每个节点向下的时候如果字符不同,则分成多个子节点。一棵树可以表示一组words。Trie树因为prefix tree含有大量的冗余,令每一个节点存储一个字典来表示字符,也称为digital search tree。Trie,又称前缀树或字典树,是一种有序...原创 2018-06-13 13:30:40 · 705 阅读 · 0 评论 -
树堆(Treap)
Treap树堆,是有一个随机附加域满足堆的性质的二叉搜索树,其结构相当于以随机数据插入的二叉搜索树。其基本操作的期望时间复杂度为O(logn)O(logn)O(logn)。相对于其他的平衡二叉搜索树,Treap的特点是实现简单,且能基本实现随机平衡的结构。Treap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap。每一个节点除了保持了key,孩子指...转载 2018-05-15 05:43:10 · 293 阅读 · 0 评论 -
B树
B 树又叫平衡多路查找树。一棵m阶的B 树 (注:切勿简单的认为一棵m阶的B树是m叉树,虽然存在四叉树,八叉树,KD树,及vp/R树/R*树/R+树/X树/M树/线段树/希尔伯特R树/优先R树等空间划分树,但与B树完全不等同)的特性如下:树中每个结点最多含有m个孩子(m>=2); 除根结点和叶子结点外,其它每个结点至少有[ceil(m / 2)]个孩子(其中ceil(x)是一个取上限的...转载 2018-05-15 05:35:08 · 155 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)
首先是个二叉树然后left child < root < right child,可以递归查找指定的值。搜索 def search(k): node = root while node != null // compare k with node if k < node.value: node = ...转载 2018-05-15 05:03:20 · 219 阅读 · 0 评论 -
斐波那契堆(Fibonacci Heap)
Potential Function: Φ = (# root nodes) + 2 ∗ (# True flags)优点 O(1)的降低优先值,O(logn)的删除最小值, Dijkstra’s algorithm runs in O(m + n log n).Disadvantages Large constant factors (both space and time) ...转载 2018-05-15 03:37:07 · 1114 阅读 · 0 评论 -
优先队列(Priority Queue)
堆的基本概念堆是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点...转载 2018-05-15 02:09:39 · 370 阅读 · 0 评论 -
Bloom Filter
Bloom filter布隆过滤器(英语:Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。Bloom filter可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。基本概念如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较...转载 2018-05-15 01:17:48 · 234 阅读 · 0 评论 -
复杂度分析
最差时间复杂度(Worst-case time per operation)在我们需要考虑实时响应效率的时候很重要。平均时间复杂的(Average-case Analysis)对于一些可能的分布,计算特别的值或者大概率的上限。有时很难计算,并且不够准确。平摊分析(Amortized analysis)平摊分析的初衷是为了弥补最差时间复杂度过于悲观的不足。在平摊分析中,执...转载 2018-05-15 00:53:10 · 732 阅读 · 0 评论 -
数据结构(DS)和抽象数据类型(ADT)
数据结构(Data Structure)要了解什么是数据结构,首先要明确什么是数据和结构。数据(Data)数据是信息的载体。它能够被计算机识别、存储和加工处理,是计算机程序加工的”原料”。 随着计算机应用领域的扩大,数据的范畴包括:整数、实数、字符串、图像和声音等。数据元素(Data Element)数据元素是数据的基本单位。数据元素也称元素、结点、顶点、记录。一个数据元素可...转载 2018-05-14 12:52:52 · 4887 阅读 · 0 评论 -
CuckooHash(布谷鸟散列)
概念CuckooHash(布谷鸟散列),最早于2001 年由Rasmus Pagh 和Flemming Friche Rodler 提出。是为了解决哈希冲突问题,利用较少的计算换取较大的空间。 wikipedia - Cuckoo hashing 特点:占用空间少,查询速度快。 来源:之所以起这个名字是因为布谷鸟生性贪婪,不自己筑巢,而是在别的鸟巢里面鸟蛋孵化,先成长的幼鸟会将别的鸟蛋挤出,这转载 2018-04-23 07:47:04 · 10594 阅读 · 3 评论 -
队列
队列的定义**队列:**queue,是先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作。队列的操作方式和堆栈类似,唯一的区别在于队列只允许新数据在后端进行添加。 维基-队列队列的基本特点:先入先出,后入后出。除头尾节点之外,每个元素有一个前驱,一个后继。转载 2018-04-23 05:39:12 · 347 阅读 · 0 评论 -
栈
栈的定义栈:限定在表尾进行插入和删除操作的线性表。类似于弹夹。允许插入和删除的一端为栈顶(top),另一端为栈底(bottom)。栈又称为后进先出LIFO(Last In First Out)的线性表。另外栈也可以用一维数组或链表的形式来完成。堆栈的另外一个相对的操作方式称为队列(FIFO)。 [维基-栈](https://zh.wikipedia.org/wiki/%E5%A0%86%E6%A0转载 2018-04-10 05:35:26 · 186 阅读 · 0 评论 -
线性表
线性表定义线性表:零个或多个数据元素的有限序列。 有限:处理的对象个数是有限的。 序列:元素之间是有顺序的,第一个元素无前驱,最后一个元素无后继。 直接前驱/后继元素线性表是具有相同数据类型的n (n>=0)个数据元素的有限序列。其中n为表长,当n=0 时该线性表是一个空表。若用L命名线性表,则其一般表示如下: L=(a1, a2, …, ai, ai+1, …, an)其中,a1是原创 2018-04-01 14:29:15 · 277 阅读 · 0 评论 -
Persistence & Full persistence vs. partial persistence.
Persistence对于一个允许更新和查询的数据结构,persistence是能够查询或者更新之前存储在数据结构中的版本的能力 - partial persistentce 只能更新最近的一些版本 可以查询之前的版本 每次更新返回version id, id用于查询操作来分辨查询的是哪个版本 - Full persistence 可以更新老版本 版本形成一棵树...原创 2018-06-14 00:44:40 · 377 阅读 · 0 评论