Binary Space Partitioning
摘要:【Binary Space Partitioning】 BSP was discovered by John Carmack used BSP trees in Doom and Quake. Although the game Doom is now of some age virtually a
阅读全文
SkipList
摘要:【SkipList】1、插入操作。 由于跳表数据结构整体上是有序的,所以在插入时,需要首先查找到合适的位置,然后就是修改指针(和链表中操作类似),然后更新跳表的level变量。 boolean insert(l,key,value) register list l; regis...
阅读全文
CSV Format
摘要:【CSV Format】 The comma separated values format (CSV) has been used for exchangingand converting data between various spreadsheet programs for quite some time.RFC documents the format of comma separated values(CSV) files and formally registers the "text/csv" MIME type for CSV in accordance
阅读全文
B-树
摘要:【B-树】 B-树是一种多路搜索树(并不是二叉的)。相当于压缩后的平衡二叉排序树。 【B-树特性】 1.关键字集合分布在整颗树中; 2.任何一个关键字出现且只出现在一个结点中; 3.搜索有可能在非叶子结点结束; 4.其搜索性能等价于在关键字全集内做一次二分查找; 5.自动层次控制; 由于限制了除根结点以外的非叶子结点,至少含有M/2个儿子,确保了结点的至少利用率,其最底搜索性能为:其中,M为设定的非叶子结点最多子树个数,N为关键字总数;所以B-树的性能总是等价于二分查找(与M值无关),也就没有B树平衡的问题;由于M/2的限制,在插入结点时,如果结点已满,需要将结点分裂为两个各占M/2的结点..
阅读全文
hash_map
摘要:【hash_map】 STL中的std::map内部使用的是红黑树,红黑树有序,每次操作的复杂度稳定在logN。在中,还有一个__gnu_cxx::hash_map,内部使用的是hash,在hash函数恰当的情况下,可以提供更快的查询速度O(1),如果hash函数很烂,使用hash_map,将会是一个灾难,操作复杂度最坏将到O(N)。 内部原理就是“Hash函数映射 + list解决Conflict”。更多可参考:http://blog.csdn.net/sdhongjun/article/details/4517325 我比较好奇的是 这个vector成员,它的默认大小是多少?以及...
阅读全文
JSON用法简介
摘要:【JSON简介】 jsoncpp主要包含三种类型的class:Value、Reader、Writer。jsoncpp中所有对象、类名都在namespace Json中,包含json.h即可。【VALUE】 Json::Value是jsoncpp中最基本、最重要的类,用于表示各种类型的对象,jsoncpp支持的对象类型可见Json::ValueType枚举值。 可如下是用Json::Value类: Json::Value json_temp;//临时对象,供如下代码使用 json_temp["name"] = Json::Value("huchao");
阅读全文
数据结构之红黑树
摘要:【红黑树】 【性质】 性质1.节点是红色或黑色。 性质2. 根是黑色。 性质3 每个叶节点是黑色的。 性质4 每个红色节点的两个子节点都是黑色。(从每个叶子到根的所有路径上不能有两个连续的红色节点) 性质5. 从任一节点到其每个叶子的所有路径都包含相同数目的黑色节点。【为什么平衡】 要知道为什么这些特性确保了这个结果,注意到性质4导致了路径不能有两个毗连的红色节点就足够了。最短的可能路径都是黑色节点,最长的可能路径有交替的红色和黑色节点。因为根据性质5所有最长的路径都有相同数目的黑色节点,这就表明了没有路径能多于任何其他路径的两倍长。
阅读全文