数据结构
文章平均质量分 52
lim要不断刷新lim
这个作者很懒,什么都没留下…
展开
-
递归详解
递归详解原创 2015-07-26 15:09:45 · 779 阅读 · 0 评论 -
递归:解决汉诺塔问题(数据结构3.2 P103)
关于汉诺塔问题我思考了一段时间。最后总结原因之前想不明白还是对递归问题没有深入理解。我的另一篇博文《递归详解》已经很好的介绍了递归的原理。分析汉诺塔问题:由以下三步组成1 用C做过度,将A柱上的n-1个盘子直接移到C柱上2 将A柱上的最后一个盘子移动到C柱上。3 用A做过度,将B柱上的n-1个盘子直接移到C柱上由此将移动n个盘子的汉诺塔问题归结为移动n-1原创 2015-07-26 16:31:08 · 1692 阅读 · 0 评论 -
堆和二叉查找树的建立的时间复杂度
根据算法可以直观的推测出他们的算法复杂度为O(nlogn)但这并不精确。我们以下推导为O(n)首先关于堆首先这个循环是从i = headsize/2 -> 1,也就是说这是一个bottom-up的建堆。于是,有1/2的元素向下比较了一次,有1/4的向下比较了两次,1/8的,向下比较了3次,......,1/2^k的向下比较了k次,其中1/2^k 由等比数列求和后再求1/转载 2015-08-09 18:31:21 · 6342 阅读 · 1 评论 -
AVL树的旋转
AVL树的基本操作是几种旋转方法。觉得这篇文章讲解的很好很全面,就拿来分享了。一、引言由于普通二叉查找树可能出现有极不平衡的情况,使时间复杂度最坏,于是有学者提出限制二叉查找树各子树的分布,使树形状平衡,保证较好的查找复杂度。其中最著名平衡树之一即为AVL树。二、AVL树的定义官方的定义可以参见其它网上资料。在这里我用大白话解释,话粗理不粗。有一对有兄弟A和B,他们的共同父亲是转载 2015-08-10 12:32:31 · 571 阅读 · 0 评论 -
Treap树的基本操作
3. Treap的操作同其他树形结构一样,treap的基本操作有:查找,插入,删除等。3.1 查找同其他二叉树一样,treap的查找过程就是二分查找的过程,复杂度为O(lg n)。3.2 插入在Treap 中插入元素,与在BST 中插入方法相似。首先找到合适的插入位置,然后建立新的节点,存储元素。但是要注意新的节点会有一个优先级属性,该值可能会破转载 2015-08-11 12:36:50 · 464 阅读 · 0 评论 -
胜者树和败者树
胜者树和败者树都是完全二叉树,是树形选择排序的一种变型。每个叶子结点相当于一个选手,每个中间结点相当于一场比赛,每一层相当于一轮比赛。 不同的是,胜者树的中间结点记录的是胜者的标号;而败者树的中间结点记录的败者的标号。 胜者树与败者树可以在log(n)的时间内找到最值。任何一个叶子结点的值改变后,利用中间结点的信息,还是能够快速地找到最值。转载 2015-08-15 17:58:11 · 689 阅读 · 0 评论 -
线性探测法构造哈希表(hash)
以下是用线性探测法构造哈希表的一个具体例子:已知一组关键字为(39,49,54,38,44,28,68,12,06,77),用除余法构造散列函数,用线性探查法解决冲突构造这组关键字的散列表。 解答:为了减少冲突,通常令装填因子α 由除余法的散列函数计算出的上述关键字序列的散列地址为(0,10,2,12,5,2,3,12,6,12)。 前5个关键字插入时,其相应转载 2015-08-03 21:00:28 · 7943 阅读 · 0 评论 -
2.6静态链表
殷人昆的数据结构那本书所用的静态链表无法区别链表尾和数组尾。所以采用这种结构。静态链表相当于是用一个数组来实现线性表的链式存储结构,大概结构图如下 在静态链表中,每一个结点包含两部分内容,一部分是data(即有意义的数据),另一部分是cur(存储该元素下一个元素所在数组对应的下标)。有几个特殊转载 2015-07-25 11:54:20 · 374 阅读 · 0 评论