honeyJ

Talk is cheap,Show me the code.

拓扑序列

拓扑排序 对一个有向无环图(Directed Acyclic Graph简称DAG)G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边(u,v)∈E(G),则u在线性序列中出现在v之前。 拓扑排序对应施工的流程图具有特别重要的作用,它可以决定哪些子工程必须要先执...

2018-08-27 10:14:22

阅读数:32

评论数:0

图的深度与广度遍历及最小生成树

上一篇文章讲了图的有关概念以及图的两种存储方式,点击打开链接接下来我们一起学习图的两种遍历及最小生成树的实现。一、图的遍历1、广度优先遍历(Breadth First Search, BFS)广度优先搜索类似于树的层序遍历,看一个例子:假设我们都从节点0开始遍历,无向图遍历顺序为0,3,4,1,2...

2018-05-02 22:43:12

阅读数:67

评论数:0

图及图的存储

一、图的有关概念1、什么是图图是由顶点集合及顶点间的关系组成的一种数据结构:G = (V, E)其中:顶点集合V = {x|x属于某个数据对象集}是有穷非空集合;          E = {(x,y)|x,y属于V}或者E = {<x, y>|x,y属...

2018-04-26 22:44:12

阅读数:46

评论数:0

小米面试题-朋友圈问题(并查集)

问题: 假设已知有n个人和m对好友关系(存于数组r)。如果两个人是直接或间接的好友(好友的好友的好友…),则认为他们属于同一个朋友圈。 请写程序求出这n个人里一共有多少个朋友圈。假如:n = 5,m = 3,r = {{1 , 2} , {2 , 3} , {4 , 5}},表示有5个人,1和...

2018-04-18 21:51:54

阅读数:202

评论数:0

布隆过滤器及优缺点

布隆过滤器: 如果想判断一个元素是不是在一个集合里,一般想到的是将集合中所有元素保存起来,然后通过比较确定。 但是随着集合中元素的增加,我们需要的存储空间会很大,检索的速度也越来越慢。 一、原理 Bloom Filter 是一种空间效率很高的随机数据结构,Bloom filter 可以...

2018-04-09 21:31:49

阅读数:110

评论数:0

数据结构之位图

位图,就是Bit_map,是用一个bit位来标记某个元素对应的Value, 而Key即是该元素。 由于采用了Bit为单位来存储数据,因此在存储空间方面,可以大大节省。 我们来看一个具体的例子: 设我们要对0-7内的5个元素(4,7,2,5,3)排序(假设这些元素没有重复),那么我们就可以采用...

2018-04-08 22:25:37

阅读数:56

评论数:0

面试题---大数据处理

1、给一个超过100G大小的log file ,log中存着IP地址,设计算法找到出现次数最多的IP地址?我们先考虑一下,100G大小的文件,一般是无法存到普通的计算机中的,我们的硬盘根本没这么大;我们可以使用前面讲的位图,一个整形32位,最多可以存42亿多的数据,100G的大文件,最多需要3.2...

2018-04-08 21:34:03

阅读数:89

评论数:0

哈希表

一、哈希查找我们之前学过的,线性表、二叉搜索树、AVL树、红黑树和B树中,元素在存储结构中的位置与元素的关键码之间不存在直接的对应关系。在数据结构中搜索一个元素需要进行一系列的关键码比较。搜索的效率取决于搜索过程中比较的次数。理想的搜索方法是可以不经过任何比较,一次直接从表中得到要搜索的元素。如果...

2018-03-17 20:06:53

阅读数:89

评论数:0

B树的插入

一、B树的定义1970年,R. Bayer和E.m ccreight 提出了一种适合外查找的树,它是一种平衡的多叉树,称为B树,有些地方写的是B-树,注意不要误读成"B减树")1、B树(B-tree)是对2-3树数据结构的扩展,又称为多路平衡查找树,它的一个节点...

2018-03-12 21:33:27

阅读数:186

评论数:0

计数排序和基数排序

计数排序和基数排序都是非比较排序。一、计数排序1、用一个数组用来保存每一个数字出现的次数2、根据每一个元素出现的次数,按照下标在原数组中排列,这样这组数据就有序 数组范围可以用max-min+1确定。代码://计数排序 //确定数据范围 辅助空间 统计每个数据出现的次数 回收 void Co...

2018-03-05 20:47:42

阅读数:60

评论数:0

交换排序---冒泡、快速、归并排序

一、交换排序      利用交换元素的位置进行排序的方法称作交换排序。常用的交换排序的方法有冒泡排序和快速排 序。快速排序是一种分区交换排序方法。 二、冒泡排序

2018-03-04 22:10:12

阅读数:71

评论数:0

选择排序--选择排序和堆排序

选择排序:基本思想:每一趟(第i趟,i=0,1,…,n-2)在后面n-i个待排序的数据元素集合中选出关键码最小的数据元素,作为有序元素序列的第i个元素。待到第n-2趟做完,待排序元素集合中只剩下1 个元素,排序结束。一、选择排序每一次在一组数中选最大的放到最后,然后再在剩余的数中选次大的数放到倒数...

2018-03-03 22:24:34

阅读数:85

评论数:0

插入排序--直接插入与希尔排序

插入排序:每一步将一个待排序的元素,按其排序码的大小,插入到前面已经排好序的一组元素的合适位置上去,直到元素全部插完位置。一、直接插入排序 基本思想:当插入第i(i>=1)个元素时,前面的array[0],array[1],…,array[i-1]已经排好序,此时用array...

2018-03-03 22:02:40

阅读数:72

评论数:0

C++实现红黑树

一、红黑树的性质红黑树也是二叉搜索树,它的每个节点增加了一个单位用来表示颜色,可以是Red也可以是Black,通过对任意一条根到叶子节点的颜色来约束,红黑树保证最长路径是最短路径的两倍,因此近似平衡。红黑树的性质: 1、每个节点不是红色就是黑色 2、树的根节点是黑色 3、如果一个节点是红色,则它的...

2018-02-18 13:37:11

阅读数:73

评论数:0

AVL树

AVL树一、AVL树的性质AVL树又称平衡搜索二叉树. AVL树的性质: 1、左子树和右子树的高度差的绝对值不大于1; 2、树中的每个左子树和右子树都是AVL树; 3、树中的每个节点都有平衡因子(_bf),每个平衡因子都等于其右子树的高度减去左子树的高度;如下图:看一下AVL树的节点结构:temp...

2018-02-17 14:09:19

阅读数:79

评论数:0

二叉搜索树

二叉搜索树 一、二叉搜索树的性质 1、它是一棵空树,或者是具有以下性质的二叉树    2、若它的左子树不为空,则左子树上所有节点的值都小于根节点的值   3、若它的右子树不为空,则右子树上所有节点的值都大于根节点的值    4、它的左右子树也分别为二叉搜索树 eg: ...

2018-01-24 13:53:51

阅读数:94

评论数:0

二叉树线索化以及线索化前序、中序、后序遍历

二叉树线索化以及线索化前序、中序、后序遍历 前面已经对二叉树的创建与建立有了一定了解,那二叉树的线索化又是什么呢? 二叉树虽然是非线性结构,但二叉树的遍历却为二叉树的节点导出了一个线性序列。 用二叉树作为存储结构时,取到一个节点,只能获取节点的左孩子和右孩子,不能直接得到节点的任一遍历序列的前...

2017-12-05 20:45:22

阅读数:136

评论数:0

二叉树面试题-镜像与判断是否为完全二叉树

二叉树部分面试题 关于二叉树的一些面试题在下面的文章已经写过了, 点击打开链接 在这里做一些补充。

2017-12-02 13:54:27

阅读数:104

评论数:0

二叉树的遍历(递归与非递归)

二叉树的遍历 1、前序遍历 判断节点是否为空,如果不为空,先访问根节点,再访问左子树,最后访问右子树; 递归实现在上一篇文章已经做了讨论。如下: void PreOrder() { _PreOrder(_pRoot); cout << endl; } void _Pre...

2017-11-30 09:25:46

阅读数:90

评论数:0

二叉树的创建与相关操作

二叉树的创建与相关操作 1、二叉树:是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。 如图:     2、二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。 3、二叉...

2017-11-27 17:07:28

阅读数:167

评论数:1

提示
确定要删除当前文章?
取消 删除
关闭
关闭