数据结构扩展
binling
这个作者很懒,什么都没留下…
展开
-
Augmenting Existing Data structure 总结
动态Order Statistic 系统(动态ranking 系统)原创 2014-10-04 17:57:22 · 650 阅读 · 0 评论 -
STL 的一些数据结构比较
从功能的角度,基本上vector都支持,这里重点是支持的高效的操作。每种数据结构支持不同的高效操作,所谓高效操作就是O(1) 或者O(lgn)的复杂度。stack 高效的尾部增删vector 高效的尾部增删,但是开放了其他的操作,这些操作是低效的queue 高效的尾部增,头部删deque 高效的头尾都可以增删list 高效的头尾都可以增删,基于双向链表。基于原创 2015-06-04 10:50:57 · 1689 阅读 · 0 评论 -
get(index) set(index value), setAll(value)都为O(1)的数据结构
方法1,基于更新时间戳(版本)两类值,index上的值和 global的值,每个index和glabal值都维护更新时间戳get(index)的时候,如果global值的时间大于index上的时间,取global的值,否则取index上的值方法2 exclude list (hash set) setAll的时候 对global赋值,同时清空exclude list之后原创 2015-06-30 18:47:38 · 2256 阅读 · 0 评论 -
random_queue:支持push, popRamdom的数据结构
pop哪一个元素,决定了queue, stack, priority_queue的不同。新加一个random_queue,等概率的从集合里取出一个元素pop1)先用rand(int l, int r)得到一个随机位置,2)和top交换3)top--思路:连续存储一般只有在边界add/remove才是O(1)的,否则会涉及shift。这里有个前提,就是要保持其余元素的原创 2015-07-31 12:22:43 · 668 阅读 · 0 评论 -
Tcp packet Receive and reOrder
已知一个消息流会不断地吐出整数1~N,但不一定按照顺序吐出。如果上次打印的数为i,那么当i+1出现时,请打印i+1及其之后接收过的并且连续的所有数,直到1~N全部接收并打印完,请设计这种接收并打印的结构。消息流吐出 2,一种结构接收而不打印 2,因为 1 还没出现。消息流吐出 1,一种结构接收 1,并且打印:1,2。class TCPReceiver {priva原创 2015-08-28 15:00:46 · 588 阅读 · 0 评论 -
基于AVL自平衡树的TreeMap实现
自平衡的插入struct node { int val; struct node* left; struct node* right; int ht; node(int v) : val(v), left(nullptr), right(nullptr) {} node() : left(nullptr), right(nullptr) {} node(i原创 2016-09-08 16:35:35 · 767 阅读 · 0 评论 -
SBT(size balanced tree) 和AVL 合二为一
SBT 和AVL类似,只是是基于size 进行balance的,旋转的case是一样的。public class AVLOrSBTTreeMap, Value> { public enum BF {HEIGHT, SIZE, NONE}; //balance factor private BF bf = BF.HEIGHT; public AVLOrSBTTreeMap() { }原创 2016-09-15 19:40:04 · 682 阅读 · 0 评论 -
基于LLRB 红黑树的 TreeMap 实现
public class LLRBMap, Value> { private static final boolean RED = true; private static final boolean BLACK = false; private class Node { Key key; Value value; Node left, right; int sz, ht;原创 2016-09-14 14:51:32 · 663 阅读 · 0 评论 -
树堆TreapMap 实现
测试结果居然比红黑树,AVL都好。RBT,AVL,SBT,Treap 区别只是节点信息和 maintain函数。所有的读操作都可以放在普通BST里,insert 和 delete(除了RBT)也可以,只需要扩展Node 和 maintain函数就行。import java.util.Random;public class TreapMap, Value> { private原创 2016-09-15 19:48:51 · 641 阅读 · 0 评论