
数据结构
NobiGo
这个作者很懒,什么都没留下…
展开
-
插入排序之直接插入排序(Java篇)
有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素原创 2016-09-15 11:02:16 · 553 阅读 · 0 评论 -
浅谈数据结构——二叉查找树实现原理分析
引言二叉查找树是一种能将链表插入的灵活性和有序数组查找的高效性结合起来的一种重要的数据结构,它是我们后面学习红黑树和AVL树的基础。二叉查找树的定义二叉查找树最重要的一个特征就是:每个结点都含有一个Comparable的键及其相关联的值,该结点的键要大于左子树中所有结点的键,而小于右子树中所有结点的键。下图就是一个典型的二叉查找树,我们以结点E为例,可以观察到,左子树中的所有结点A和C都要小于E,而转载 2017-04-08 20:08:43 · 409 阅读 · 0 评论 -
浅谈数据结构——如何解决hash冲突
出现Hash冲突的原因当关键字值域远大于哈希表的长度,而且事先并不知道关键字的具体取值时。冲突就难免会发 生。另外,当关键字的实际取值大于哈希表的长度时,而且表中已装满了记录,如果插入一个新记录,不仅发生冲突,而且还会发生溢出。因此,处理冲突和溢出是哈希技术中的两个重要问题。解决Hash冲突的方案开放地址法当冲突发生时,使用某种探查(亦称探测)技术在散列表中形成一个探查(测)序列。沿此序列逐个单元地原创 2017-03-16 21:56:39 · 385 阅读 · 0 评论 -
浅谈数据结构——赫夫曼数
出险原因这篇博客就介绍一下最基本的压缩编码方法——赫夫曼编码原理赫夫曼编码的原理是赫夫曼树,这里我们先介绍赫夫曼树。从数中一个节点到另一个节点之间的分支构成两个节点之间的路径,路径上的分支数目就是路径长度。树的路径长度就是从树根节点到每一节点的路径长度之和。例如:二叉树a中根节点到节点D的路径长度为4.二叉树的路径长度为:1+1+2+2+3+3+4+4=20.节点的带权路径长度为从该节点到树根之间的原创 2017-03-16 22:10:01 · 486 阅读 · 0 评论