斐波那契堆

斐波那契堆同二项堆一样,也是一种可合并堆。相对于二项堆,斐波那契堆的优势在于如果不涉及删除元素的操作,则它的平摊运行时间为O(1)。但是由于其算法过于复杂, 因而实际上更多的是用二项堆。 一、定义 一个斐波那契堆具有如下性质: 堆有一组有序树组成,但是堆中的树不一定是二项树斐波那契堆...

2013-10-28 21:52:05

阅读数 4141

评论数 0

二项堆

一、二项树 二项树是一种通过递归定义的有序树,其定义如下: 度数为0的二项树只包含一个结点度数为k的二项树有一个根结点,根结点下有 个子女,每个子女分别是度数为k-1,k-2,…,0的二项树的根 也可以按照如下定义: 度数为0的二项树只包含一个结点度为k的二项树由两棵度为k-1的二项树通过连接...

2013-10-21 20:46:37

阅读数 4001

评论数 1

B树

B树是另一种平衡查找树,它与AVL树以及红黑树的区别在于,它的一个节点可以由多个子女,由于B树中每个节点子女比ALV树和红黑树多,因而它的高度要比这种两种树更低,不过数量级仍为O(logn)。 B树中一个节点的关键字将该节点所处理的关键字域划分成了多个子域,如果一个节点有x个关键字,则它有x+1...

2013-10-20 11:45:38

阅读数 889

评论数 0

红黑树之二(删除节点)

红黑树的另一个重要的操作是删除节点,它也可以分为两步: 找到要删除的节点,并删除它对树进行调整使得树满足红黑树的要求 一、删除节点 从排序树中删除节点的思路是一样的,首先找到要删除的节点,并做如下处理: 如果该节点不存在非空子节点,则直接删除它如果该节点存在一个非空子节点,则用其非空子节...

2013-10-15 21:50:08

阅读数 9935

评论数 4

红黑树之一(基本性质,插入节点)

平衡二叉树(AVL)是一种具有很好的性能的排序二叉树,但是也并不完美。如果所需要维护数据变化也比较频繁,这就需要经常对ALV树进行调整,由于平衡二叉树对其子树的限制太严格,因而进行插入或者删除时经常需要对树进行调整,而且插入时需要调整的子树可能就是树本身,这就需要较长的时间来查找需要调整的子树的根...

2013-10-14 21:36:23

阅读数 4712

评论数 0

平衡二叉树之二(删除节点)

类似于添加操作,从平衡二叉树中删除节点也分为两步,第一步完成节点的删除,第二步找到因为删除而导致不满足平衡二叉树要求的子树并对其进行调整。 一、 删除节点 从平衡二叉树中删除节点更为复杂。首先第一步需要找到要删除的节点x,并分情况进行处理: 如果要删除的节点为叶子节点,就找到了要删除的节点如果...

2013-09-17 20:38:00

阅读数 16796

评论数 14

平衡二叉树之一(基本性质、查询、添加)

平衡二叉树(Balanced BinaryTree)又被称为AVL树。它具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。平衡二叉树的高度为O(logn)。 平衡二叉树一般是一个有序树,由于其高度为O(logn),因此可以得到很好的添加、删除...

2013-09-14 22:17:12

阅读数 5438

评论数 0

二叉树

二叉树是一种比较常见的树,其加在树上的限制是树的度为2。每个节点的两棵子树分别为其左子树和右子树。 一、基本概念 1.1 二叉树的性质 二叉树的度为2,它具有如下性质: 一棵非空二叉树的第i 层上最多有2i-1 个节点(i≥1)一棵深度为k 的二叉树中,最多具有2k-1 个节点对于一棵非空的...

2013-09-14 13:42:22

阅读数 1311

评论数 0

哈希表

链表的插入和删除效率比较好,但是查找的效率较低,而数组的插入和删除效率较低,但是有很好的查找效率,很自然的想到能否将二者结合起来以得到很好的插入、删除以及查找效率。这种方法就是哈希表。 一、基本概念 哈希表又叫散列表。它的原理是通过一个哈希函数和一种处理冲突的方法将一组关键字映射到一个有限的连续的...

2013-09-11 22:23:09

阅读数 1540

评论数 0

排序和查找-线性排序算法和查找特定值

一、排序算法的时间下界 常用排序算法中的冒泡排序、选择排序、插入排序等排序算法都是基于比较的。对于基于比较的排序算法,其时间下界为Ω(nlgn). 用决策树模型可以证明该结论。基于比较的排序算法的每一次排序都可以看做是一次决策,决策的结果是比较的两个值是大于或者小于等于。考虑三个元素的排序,以下标...

2013-09-01 12:03:43

阅读数 2058

评论数 0

常用排序算法

排序是程序设计中的一种重要操作,它的功能是将一个数据元素(或记录)的任意序列,重新排列成一个关键字有序的序列。 一、基本概念 1.稳定性 对序列中存在的任意的两个相等的数据元素A和B,如果A在B之前,在用某个排序算法排序后,A仍然在B之前,则就称该排序算法是稳定的;否则,就称该排序算法是...

2013-02-07 15:54:03

阅读数 990

评论数 0

数组和字符串

本文仅作备忘。。。 数组和字符串都是线性表。 一、数组 一维数组即为采用顺序存储映像的线性表,其大小固定。 二维数组可以看做:它的每个数据元素也是一个定长线性表的定长线性表。 N维数组一次类推。 约定N维数组array[n1][n2]…[nN]中,n1指第一维,n2指第二维,…nn为第...

2013-01-13 11:37:04

阅读数 685

评论数 0

栈和队列

栈和队列是两种很常见很有用的线性表。它们是在线性表上添加了限制后的特殊线性表。 一、栈 1.栈的定义 栈是只能在表尾添加和删除元素的线性表。在栈中,表尾元素称为栈顶,表头元素称为栈尾。不含元素的栈为空栈。 由于只能在栈顶添加和删除,因此最后被添加进栈的元素必定最先被删除,因此栈具有“后进先...

2012-12-26 20:04:05

阅读数 658

评论数 0

链表常见的问题

关于单链表,常见的两个问题是     1.怎么判断一个单链表中是否存在循环,即出现如下情形         2.如何判断两个单链表是否交叉,即出现如下情形          一、 第一个问题,如何判断单链表中是否存在循环(并找出循环起点) 先来比较下遍历没有循环的单链表和...

2012-12-18 21:37:02

阅读数 2095

评论数 0

线性表基础

线性表是最常用最简单的一种数据结构。它是n个元素的有序序列。其中的元素可能是一个数值,也可能是一个由若干数值组成的结构,也可能是其它任意的结构。  一、线性表的特点 线性结构的特点是:在数据元素的非空有限集中 存在唯一一个被称为“第一个”的数据元素;存在唯一的一个被称为“最后一个”的...

2012-12-16 21:44:57

阅读数 1357

评论数 1

写在开篇

毕业几年了,一直都想写点什么,这么做有几个目的: 1.做总结:希望通过书写将自己学过、做过的东西系统化 2.做备忘:每天要做的事情太多,时间长了,难免遗忘,记录下来就可以随时查看,可以当作自己的一个小工具 3.做分享:工作几年,有一个深深的感触就是有时候自己觉得理解了、掌握了的东西实际上自己...

2012-12-12 23:03:47

阅读数 798

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭