有10天的时间没写博客了, 这两天也没闲着, 内审来检查的时候提出了一些新的要求, 然后根据这些要求, 短短三天一天一个小版本号,把合同台账给升级了. 目前公司新买了一台VPS,然后我把台账系统挂到了上边. 然后做了个二级域名解析: http://cms.conyli.cc, 没有采用部署的方式,
二叉查找树已经实现了, 但是二叉查找树有个巨大的缺点, 即可能会出现不平衡的状态, 比如使用我们自行编写的二叉树, 如果每次添加的数都比之前所有的数要大, 比如把一个升序数组放入二叉树中, 二叉树其实并没有分叉, 因为每个节点都会挂在下一个节点的右节点上, 此时的二叉树退化成了一个链表. 链表里搜东
堆是结点具有特定排列次序的完全二叉树, 即一层没铺满之前, 子节点都是从左往右铺. 由于这个特点, 堆最常见的实现是使用数组, 这个堆并不是操作系统在运行程序的时候分配给程序的用于存储共享数据空间部分, 而是特指这种数据结构. 堆的基础概念 堆的实现 - 数组 堆的实现 - add()方法 堆的实现
学算法现在真是越来越难了, 一杯茶, 一包烟, 一个算法想半天. 昨天看完了二叉查找树的递归删除, 晚上睡觉的时候还在想着这个东西, 最要好好理解的就是将所有的操作都变化为定位要删除的节点为根节点这一个操作, 然后在递归中每次返回新子树的根节点, 重新又把树串联起来的这个思路很重要. 今天来看看迭代
二叉查找树实际上是一种"有序"树, 虽然可能看起来不是那么直观. 我记得在看算法第四版的时候, 开头就用了数组实现树, 给我幼小的心灵造成了伤害. 现在来一步一步又爬过来看到树了, 希望能爬上这棵树 二叉查找树原理和接口 二叉查找树 - 添加和修改元素 二叉查找树 - 查找元素 二叉查找树 - 删除
接着继续来看树的一些相关的方法. 高度和节点个数 遍历二叉树 - 递归遍历 遍历二叉树 - 中序迭代遍历和迭代器 二叉树的实现 - 节点类BinaryNode 二叉树的实现 - 组装树的方法 高度和节点个数 在开始计算之前, 要明白Tree结构是在Node外边包装了一层, 所以可以把方法写在Bina
Java的HashMapn内部的实现是数组加上红黑树. 所以想要真正的了解散列表, 原来自行实现的那种不是最好的. 现在就是要重新杀到树了, 来看看这种数据结构. 上次看算法第四版的时候, 图和树只是略略看过, 那本书有点太深, 直接看的话有点懵逼, 现在第二次, 感觉就好多了. 还是那句话, 看不
如果把我们的字典看成一个大线性表的话, 也没有任何问题, 不过随着字典的扩大, 我们会发现, 这和现实中为了寻找一个词语的解释, 一页一页翻字典没有任何区别. 也就是说, 我们的字典看上去叫字典, 也实现了字典的接口, 但是在内部, 没有实现一本字典应该有的索引功能. 因此, 我们会想, 如果有一个
在上一章的查找中, 即使是二分搜索, 也要一点一点的对比过来, 有没有一种办法, 可以根据要查找的内容, 直接定位到数组中的具体一个索引, 而不是反复操作索引和进行对比. 这个思想就促使了一种通常叫字典的数据结构的诞生, 就像一本字典一样, 每一个词对应着一个页码, 我无需一页一页去翻直到找到那个词
在挺进哈希表之前, 先来一个短短的小插曲, 就是查找. 我们的有序表相比线性表, 在很多操作上的复杂度都有了提升, 然后因为有序, 有一种操作却可以大幅提升效率. 发布完之后发现, 这竟然是到现在为止的400篇文章, 又一个里程碑. 确实也真的学到很多东西啦. 无序表中的查找 有序表中的查找 改造数