
数据结构
文章平均质量分 62
db199410
这个作者很懒,什么都没留下…
展开
-
AVL树解析
首先介绍一下AVL旋转树:AVL树也是一棵二叉搜索树,AVL树存在的原因是避免二叉搜索树因为左右子树高度相差过大使得查找花费过多时间。下面就来介绍一下AVL树的实现,这里重点介绍AVL中的Insert接口,因为这个结构就包含了AVL的所有精华。1、插入节点 要插入一个节点就必须先找到节点要插入的位置,因为AVL树同时也是一棵平衡树,所以用循环或递归很容易就可以找到。插入时要注意是插原创 2016-08-18 23:19:57 · 449 阅读 · 0 评论 -
数据结构之红黑树解析
红黑树1.定义:红黑树是一棵二叉搜索树,它在每个节点上增加了一个存储位来表示节点的颜色,可以是Red或Black。通过对任何一条从根到叶子简单路径上的颜色来约束,红黑树保证最长路径不超过最短路径的两倍,因而近似于平衡。2.特性:(1)每个节点,不是红色就是黑色的(2)根节点必须为黑色(3)不能出现连续的红节点(4)对每个节点,从该节点到所有叶节点上的黑色节点的和相当原创 2016-08-20 16:38:08 · 403 阅读 · 0 评论 -
栈面试题总结
1.求栈上的最小值具体要求:在O(1)的时间复杂度内求出栈上的最小值,并且不受出栈入栈的影响。 思路:借助一个辅助栈,原栈在有数据入栈的时候,辅助栈也有数据入栈。辅助栈入栈的数据为当前的最小值。 实现:template<typename T>class StackMin{public: void Push(const T&data); void Pop(); T M原创 2016-08-23 11:13:55 · 337 阅读 · 0 评论 -
单例模式
单例模式是一种常用的软件设计模式。特点: 线程安全并且高效单例类保证全局只有一个实例对象单例类提供唯一一个实例接口代码:1、懒汉模式class singleton{ static singleton*Getinstance()//没有构造函数,只能用类名直接调用 { if (NULL == _sinstance)//双重判断,使代码更高效 {//l原创 2016-09-14 19:06:38 · 356 阅读 · 0 评论 -
哈希表解析
一、何为哈希表HashTable-散列表/哈希表,是根据关键字(key)来直接访问在内存存储位置的数据结构。 它通过一个关键值的函数将所需的数据映射到表中的位置来访问数据,这个映射函数叫做散列函数,存放记录的数组叫做散列表。二、哈希表的构造方法直接定址法–取关键字的某个线性函数为散列地址,Hash(Key)= Key 或 Hash(Key)= A*Key + B,A、B为常数。除留余数法–取关原创 2016-09-04 16:16:40 · 502 阅读 · 0 评论 -
大数据处理
一、面试题:.给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。思路:40亿的数据如果加载到内存中去需要16G的空间,显然不可能实现。这时候如果用一个比特位表示一个数字,那么需要的空间就只要16G/32(一个整型数据有32个比特位),即500多M,这时计算起来就比较方便了。(位图)实现方法: (1)、开辟一段连续足以存下所有整型数据的整型空间 (2原创 2016-09-04 17:33:22 · 373 阅读 · 0 评论 -
红黑树和AVL树的效率对比
为什么选择红黑树作为底层实现 红黑树是一种类平衡树, 但它不是高度的平衡树, 但平衡的效果已经很好了. 补充说明另一种 AVL 树, 我之前的博文: 《编程珠玑,字字珠玑》读书笔记完结篇——AVL树用过 STL map 么, 你用过 linux 么(这个说大了), 他们都有红黑树的应用. 当你对搜索的效率要求较高,并且数据经常改动的情景,你可以用红黑树, 也就是 map.至于, 为什么不用 AVL转载 2016-09-05 20:08:47 · 5028 阅读 · 1 评论 -
快排详解
一、快排的三种方法1、最早的方法 (1)思路:给出一个key值(默认为数组第一个位置上的数),从数组开头开始找大于key的数,数组末端开始找小于key的数,找到之后两位置上的数进行交换 (2)画图理解: (3)代码:int Partition2(int*arr, int left, int right){ int key = arr[left]; while (left原创 2016-09-06 15:02:04 · 4111 阅读 · 0 评论 -
大数据处理算法--Bloom Filter
一、布隆过滤器(Bloom Filter)的定义布隆过滤器可以用来检测数据是否存在于一个集合中。它是hash的扩展,底层就是一个位数组,每一个bit位可以表示一个数字,所以布隆过滤器是基于位图来实现的。二、布隆过滤器的原理1、插入数据在位图中,每一个bit对应一个数字,出现一个数字就可以在相应的位上置1。但是布隆过滤器不一样,它要处理的不仅仅是整型还有其他如string类型原创 2016-09-06 21:45:32 · 603 阅读 · 0 评论