- 博客(6)
- 资源 (6)
- 问答 (3)
- 收藏
- 关注
转载 跳跃表-原理及Java实现
跳跃表的引入我们知道,普通单链表查询一个元素的时间复杂度为O(n),即使该单链表是有序的,我们也不能通过2分的方式缩减时间复杂度。 如上图,我们要查询元素为55的结点,必须从头结点,循环遍历到最后一个节点,不算-INF(负无穷)一共查询8次。那么用什么办法能够用更少的次数访问55呢?最直观的,当然是新开辟一条捷径去访问55。
2014-06-15 10:02:13 1309
转载 各类数据结构的特点
数据结构是对在计算机内存中(有时在磁盘中)的数据的一种安排。数据结构包括数组、链表、栈、二叉树、哈希表等等。算法对这些结构中的数据进行各种处理。例如,查找一条特殊的数据项或对数据进行排序。掌握这些知识以后可以解决哪些问题呢?现实世界数据存储程序员的工具建模数据结构的特性:数组:优点是插入快,如果知道下标,可以非常快地存取。缺点是查找慢,删除慢,大小固
2014-06-10 20:39:02 2572
转载 Treap(树堆)
Treap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap记录一个额外的数据,就是优先级。Treap在以关键码构成二叉搜索树的同时,还按优先级来满足堆的性质(在这里我们假设节点的优先级大于该节点的孩子的优先级)。但是这里要注意的是Treap和二叉堆有一点不同,就是二叉堆必须是完全二叉树,而Treap可以并不一定是
2014-06-08 09:54:55 637
转载 红黑树
红黑树是一种经典的数据结构,在linux内存管理、nginx 等很多地方用到它。主要操作包括插入、删除,其中插入6种情况,删除8种情况,详细的思路就不说了,如果不太明白的请参考算法导论13章,看的时候一定要把每一种插入、删除的情况在纸上自己画出来,这样会节省你很多时间。下面是java实现的代码:[java] view plaincopy
2014-06-08 08:49:45 577
转载 二叉树
为什么使用树: 树结合了两种数据结构的有点:一种是有序数组,树在查找数据项的速度和在有序数组中查找一样快;另一种是链表,树在插入数据和删除数据项的速度和链表一样。既然这样,我就要好好去学了....(最主要讨论的是二叉树中的二叉搜索树,即一个节点的左子节点关键值小于这个节点,右子节点的关键值大于这个节点) 设计前的思考:树——>元素(节点)
2014-06-04 21:21:08 667
原创 算法导论-栈和队列的简单实现
栈:接口:public interface Stack {boolean isEmpty();void clear();T pop();boolean push(T t);int length();// 查看站顶元素,不执行移除T peek();// 返回对象位置int search(T t);}
2014-06-02 15:36:54 743
TA创建的收藏夹 TA关注的收藏夹
TA关注的人