- 博客(14)
- 收藏
- 关注
转载 SBT
原文连接:http://www.cnblogs.com/zgmf_x20a/archive/2008/11/14/1333205.html在今年的信息学冬令营上,陈启峰提出了一个自己创造的BST数据结构—Size Balanced Tree。这个平衡二叉树被全世界内的许多网站所讨论,大家讨论的主题也只有一个—SBT能够取代Treap吗?本文详细介绍SBT树的性质,以及一些常用的
2015-08-14 09:54:01 408
转载 哈希表
原文连接:http://www.cnblogs.com/vamei/archive/2013/03/24/2970339.htmlHASH哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一
2015-08-14 09:50:25 401
转载 伸展树
原文连接:http://www.cnblogs.com/vamei/archive/2013/03/24/2976545.html我们讨论过,树的搜索效率与树的深度有关。二叉搜索树的深度可能为n,这种情况下,每次搜索的复杂度为n的量级。AVL树通过动态平衡树的深度,单次搜索的复杂度为log(n) (以上参考纸上谈兵 AVL树)。我们下面看伸展树(splay tree),它对
2015-08-14 09:42:46 398
转载 树堆
原文链接:http://blog.csdn.net/yang_yulei/article/details/46005845TreapTreap=Tree+Heap。Treap本身是一棵二叉搜索树,它的左子树和右子树也分别是一个Treap,和一般的二叉搜索树不同的是,Treap纪录一个额外的数据,就是优先级。Treap在以关键码构成二叉搜索树的同时,还满足堆的性质
2015-08-14 09:20:12 525
转载 AVL树
AVL树是最先发明的自平衡二叉查找树。在AVL树中任何节点的两个儿子子树的高度最大差别为一,所以它也被称为高度平衡树。查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 对二叉树的平衡调整过程,主要包含四种旋转操作:LL,LR,RR,RL 。 LR由当前节点左儿子的一次RR旋转和当前节点的一次LL旋转
2015-08-14 08:53:33 402
转载 红黑树并没有我们想象的那么难
原文连接:点击打开链接红黑树并没有想象的那么难, 初学者觉得晦涩难读可能是因为情况太多. 红黑树的情况可以通过归结, 通过合并来得到更少的情况, 如此可以加深对红黑树的理解. 网络上的大部分红黑树的讲解因为没有「合并」. 红黑树的五个性质:性质1. 节点是红色或黑色。性质2. 根是黑色。性质3. 所有叶子都是黑色(叶子是NIL节点)。
2015-08-14 08:38:39 2004
转载 VisualC++信息安全编程
(1)内联汇编实现NT下读MBR[cpp] view plaincopyprint?MBR,全称为Master Boot Record,即硬盘的主引导记录。 MBR,全称为Master Boot Record,即硬盘的主引导记录。 为了便于理解,一般将MBR分为广义和狭义两种:广义的MBR包含整个扇区(引导程序、分区表及分隔标识),也就是上面所说的主引
2014-08-26 23:00:00 1641
转载 c++回调函数 callback
C++中实现回调机制的几种方式(1)Callback方式Callback的本质是设置一个函数指针进去,然后在需要需要触发某个事件时调用该方法, 比如Windows的窗口消息处理函数就是这种类型。比如下面的示例代码,我们在Download完成时需要触发一个通知外面的事件:[cpp] view plaincopytypedef voi
2014-04-14 11:05:16 450
转载 C++11 FAQ中文版:共享资源的智能指针——shared_ptr
三13Year 2011陈 良乔C++11 FAQ共享资源的智能指针——shared_ptrshared_ptr被用来表示共享的拥有权。也就是说,当两段代码都需要访问一些数据,而它们又都没有独占该数据的所有权(从某种意义上来说就是该段代码负责销毁该对象)。这是我们就需要shared_ptr。shared_ptr是一种计数指针。当引用计数变为0时,shared_ptr所指向的
2014-03-17 13:29:20 418
转载 C++0x FAQ中文版:std::function 和 std::bind
C++0x FAQ中文版:std::function 和 std::bind - [C++11 FAQ]加入微群学C++,更有趣,更轻松:)此博客已经停止更新,并乔迁新址http://chenlq.net,感谢大家对本博客的喜爱,希望在新的站点能够继续和大家一起交流学习。谢谢大家:)std::function 和 std::bind标准库函数bind
2014-03-17 10:10:55 383
转载 线程池
线程池:创建一定数量(建议:CPU个数 * 2)的线程去执行很多个任务,它通常面向的是一个队列。一个典型的用法是,有许多个任务远超过线程池数量,将任务放进队列,多个线程则不断的从队列中取出任务执行,直到所有任务都完成,线程可以终止或者睡眠等待新任务的到来。线程池的伸缩性对性能有较大的影响。创建太多线程,将会浪费一定的资源,有些线程未被充分使用。銷毀太多執行緒,將導致之後浪費
2014-03-17 09:25:17 448
转载 C++11下的线程池以及灵活的functional + bind + lamda
最近学习了一些C++11的文章,急着动手玩一玩。这次,打算利用boost的thread实现一个线程类,维护一个任务队列,以便可以承载非常灵活的调用。这个线程类可以方便的为后面的线程池打好基础。线程池还是动态均衡,没有什么别的。由于minGW 4.7 对 C++11 thread 不支持,所以采用 boost 代替,linux 下是支持的,只是名字空间不同而已,套路都一样。先上代码:
2014-03-17 09:07:28 624
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人