算法与数据结构
itch
对未来的恐惧
展开
-
算法与数据结构 其一 算法时间复杂度
算法时间复杂度算法是为求解一个问题需要遵循的,被清楚指定的简单指令的集合。 对于一个问题,一旦某种算法(以某种形式)被确定为是正确的,那么重要的一步就是算法所消耗的 时间、空间等资源量的问题。这小节讨论:算法复杂度,即如何在运算前估计一个程序所需要花费的时间首先理解下面两个概念:时间频度 和 时间复杂度时间频度(T(n)):一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道原创 2017-08-08 15:46:12 · 333 阅读 · 0 评论 -
算法与数据结构 其五 (补充)函数对象实现查找二叉树
函数对象实现二叉树这小节 就让我们来用函数对象实现二叉树等等?你不知道什么是函数对象? 好吧, 先让我们来整理清楚什么是函数对象(你不知道什么叫指针的话,下面的可以跳过) 1.函数对象目的:人们常说java中没有了指针,殊不知,java中的对象引用就是指针,有时候我们说一个对象往往指的就是这个对象的引用,也就是说基本上把对象的引用很对象等同了。 而函数对象就雷同与带指针的函数.BUT ,这做转载 2017-08-19 16:51:05 · 236 阅读 · 0 评论 -
算法与数据结构 其六 Avl平衡树
Avl平衡树接下来要介绍的树都是从二叉树演变而来的,Avl平衡树当然不例外。何谓平衡?原目标是树的所有左右子数的高度都相等,但是实际操作起来不现实,所以给的平衡条件是 树的每个节点的左子树和右子树的高度最多差1 那么Avl平衡树就是树的每个节点的左子树和右子树的高度最多差1 的二叉查找树。由于一科满二叉树的高度是O(logN),平衡二叉树的高度仅仅稍微大于 O(logN),所转载 2017-08-15 09:28:00 · 214 阅读 · 0 评论 -
算法与数据结构 其二 数组和链表 的实现
数组和链表的实现程序 = 算法 + 数据结构 这句话道出算法和数据结构的联系 (PS:虽然从知乎听来另一句话 程序 [ ] ≠ 软件,23333)那么针对我们日常开发中,使用了别人封装好处理数据的类,是否有必要究其实现的原理,其实我觉得还是有必要的。因为在java中使用不同的集合类处理数据,虽然能达到同样的目的,但是性能方面却有所差异,同种效果的方法间的时间复杂度也不同(不知道时间复杂度是什么原创 2017-08-09 22:34:58 · 211 阅读 · 0 评论 -
算法与数据结构 其三 栈的实现
上一小节 :算法与数据结构 其N 数组和链表 的实现这一小节就讲讲 栈的实现 什么是栈(Stack)? 栈就是一个容器(杯子?碗?随便你想叫什么都行) 先放进去(push)的数据,就只能放在容器底部,最后放进去的数据,就会在最上面。 那我们要获取数据(pop),就只能从最上面的开始拿出来。 如果你只看看,不进去(peek),就只能看到最上面的数据。 Top 就相当于指针吧,用来指向最原创 2017-08-09 23:04:07 · 188 阅读 · 0 评论 -
算法与数据结构 其四 循环队列的实现
循环队列的实现队列:大家都懂,就想出排队先进先出麻(别说你还想插队) 循环队列是啥,就是拍一圈咯。但是要有两个指针负责头和尾,不然你都不知道怎么加入,怎么拿走。 (这张图很好诠释了什么是循环队列,恩 ∩_∩) 你需要一个头指针和一个尾指针,知道队列头和尾。if 尾指针下一个位置是头指针时 队列满;if 尾指针和头指针处于同个位置 队列空if 队列加入节点 节点变成尾原创 2017-08-11 21:59:56 · 250 阅读 · 0 评论 -
算法与数据结构 其五 二叉查找树
二叉查找树树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节点(或左孩子和右孩子),并且二叉树的子树有左右之分,其次序不能任意颠倒。一般根节点比左节点大比右节点小。最基本实现方式public class BinarySearchTree<E extends Comparable<? super E>>{ //节点转载 2017-08-10 21:58:20 · 184 阅读 · 0 评论 -
无限级目录树数据结构前端实现
无限级目录树数据结构的前端实现原创 2017-11-14 13:40:57 · 7578 阅读 · 0 评论