摘要: 跳表是一个很有意思的数据结构,它实现简单,但是性能又可以和平衡二叉搜索树差不多。 据MIT公开课上教授的讲解,它的想法和纽约地铁有异曲同工之妙,简而言之就是不断地增加“快线”,从而降低时间复杂度。 当“快线”的数量为lgn时,我们就得到了现在的快表——一个类似于平衡二叉搜索树的数据结构。 网上没有比 阅读全文
posted @ 2020-02-01 19:37 简讯 阅读(703) 评论(0) 推荐(0) 编辑
摘要: 斐波那契堆是一种高级的堆结构,建议与二项堆一起食用效果更佳。 斐波那契堆是一个摊还性质的数据结构,很多堆操作在斐波那契堆上的摊还时间都很低,达到了θ(1)的程度,取最小值和删除操作的时间复杂度是O(lgn)。 斐波那契堆的关键操作我觉得是合并树和级联剪切。下面我简要地说一些关于这两个方法的体会。 斐 阅读全文
posted @ 2020-02-01 19:26 简讯 阅读(1050) 评论(0) 推荐(0) 编辑
摘要: 二叉堆可以看做一个近似的完全二叉树,所以一般用数组来组织。 二叉堆可以分为两种形式:最大堆和最小堆。最大堆顾名思义,它的每个结点的值不能超过其父结点的值,因此堆中最大元素存放在根结点中。最小堆的组织方式刚好与最大堆相反,它的最小元素存放在根结点中。 维护堆性质最重要的两个算法就是向上维护和向下维护。 阅读全文
posted @ 2020-02-01 19:00 简讯 阅读(644) 评论(0) 推荐(0) 编辑
摘要: 我遇见了一个bug是这样的:一个node结点包含node * left和node * right两个指针域。 void fun(node * &a, node * b) { b->right = a->right; b->left = a; a->right->left = b; a->right 阅读全文
posted @ 2020-01-18 11:41 简讯 阅读(167) 评论(0) 推荐(0) 编辑
摘要: BST是一类用途极广的数据结构。它有如下性质:设x是二叉搜索树内的一个结点。如果y是x左子树中的一个结点,那么y.key<=x.key。如果y是x右子树中的一个结点,那么y.key>=x.key。 BST容易出现不平衡的情况,所以实际运用的时候还是以平衡的二叉搜索树为主,例如RB树,AVL树,tre 阅读全文
posted @ 2020-01-16 16:17 简讯 阅读(591) 评论(0) 推荐(0) 编辑
摘要: 众所周知,红黑树是用途很广的平衡二叉搜索树,用过的都说好。所以我们来看看红黑树的是怎么实现的吧。 红黑树顾名思义,通过红与黑两种颜色来给每个节点上色。其中根结点和叶子结点一定是黑色的,并且红色结点的两个孩子一定是黑色的,每个结点到所有后代叶子的简单路径上,均包含相同数目的黑色结点(黑高bh)。 这里 阅读全文
posted @ 2020-01-16 16:09 简讯 阅读(628) 评论(0) 推荐(0) 编辑
摘要: B树是一种平衡搜索树,它可以看做是2-3Tree和2-3-4Tree的一种推广。CLRS上介绍了B树目前主要针对磁盘等直接存取的辅存设备,许多数据库系统也利用B树或B树的变种来存储信息。 本文主要针对代码实现作一些讲解。如果对B树性质或特点不了解的,请对照B树的定义来阅读本文。或先了解B树的定义,对 阅读全文
posted @ 2020-01-16 15:53 简讯 阅读(2487) 评论(0) 推荐(0) 编辑
摘要: SELECT算法利用快排中的partition思想来进行无序数组的快速选择。 寻找第i个顺序统计量可以简单理解为寻找第i小的元素。 该算法通过为partition选择一个好的主元,来保证Partition得到一个好的划分。 当然partition需要进行一些修改,把划分的主元也作为输入参数。 代码如 阅读全文
posted @ 2020-01-14 19:56 简讯 阅读(721) 评论(0) 推荐(0) 编辑
摘要: 桶排序假设输入数据服从均匀分布,平均情况下它的时间复杂度为O(n)。 桶排序将输入数据的区间均匀分成若干份,每一份称作“桶”。分别对每一个桶的内容进行排序,再按桶的顺序输出则完成排序。 通常使用链表来实现桶。 代码如下:(仅供参考) void Insert(vector<double> & bkt, 阅读全文
posted @ 2020-01-14 19:42 简讯 阅读(1751) 评论(0) 推荐(0) 编辑
摘要: 基数排序是一种思想很值得学习的排序方法。 它突破了正常的排序思维:先排高位,如果高位相同再排次高位,直至最低。它的思想是利用稳定排序从低位开始排,最后再排最高位。 另外它用来划分的位不一定是一位一位的划分,还可以是每几位一组,然后按组从低到高来排序。 事实上,当总位数b等于O(lgn),并且每一组的 阅读全文
posted @ 2020-01-14 19:35 简讯 阅读(559) 评论(0) 推荐(0) 编辑