自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

扬俊的小屋

这世界上有三样东西是别人抢不走的,一是吃进胃里的食物,二是读进大脑的书,三是藏在心里的梦想。

  • 博客(10)
  • 收藏
  • 关注

原创 SQL中关于EXISTS谓词的理解

  在SQL语言中,EXISTS(存在)谓词是一个非常重要的查询关键词。 让我们先看看EXISTS的用法:EXISTS代表存在量词。带有EXISTS谓词的子查询不返回任何数据,只产生逻辑真值“true”或逻辑假值“false”。例如,以下的SQL语句: SELECT snameFROM studentWHERE exists(SELECT * FROM sc ...

2017-12-06 15:35:14 8145 11

原创 并查集的路径压缩优化

在上面两节中,我们讨论了基于Size和基于Rank的优化策略,但是这两种优化策略都集中在在优化Unionelements这个操作上,那么,对于并查集来说,是不是还有其他部分可以优化呢?当然,下面我们就来介绍一下优化find查询的优化策略:一.基于循环的路径压缩优化首先,让我们来回忆一下find执行的操作:从一个节点,不停的通过parent数组向上去寻找他的根节点,在这个过程中,我们相当于把

2017-12-28 21:41:59 11020 7

原创 基于Rank的并查集优化

在上一小节中,我们讨论了基于Size的并查集优化方法,即在合并两个集合时,通过判断两个集合元素的数量大小来决定把哪一个集合并入另一个集合当中,从而减少了因为合并集合使得合并后树的层数增多的情况,因此执行find操作所需的步骤数量也大大减少了。但是,没有绝对完美的优化方法,这种基于Size的合并策略在有的时候却并不能很好的解决合并时发生层数增多的问题,例如下面这种情况:我们可以看

2017-12-27 21:21:42 2262 8

原创 基于Size的并查集优化

在上一节中,我们对并查集进行了一个结构上的优化,然而,我们发现在数据量很大时,貌似效率并没有被提升很多,因此,我们今天就来讨论一下并查集的另一种优化方式:基于Size的优化。在上一节中,我们对于两个集合的合并,貌似是随意的进行的,然而,这样会引发一些极端的情况出现,例如,在下图中:如果我们需要把4和9所在的集合合并,对于原来的代码逻辑,我们总是把第一个集合的根元素的父节点指向另一个

2017-12-27 17:14:03 708

原创 并查集的常规实现方法

在上一节中,我们讨论了并查集的简单实现方法,然而我们却发现并查集的效率好像并不是很高,因此,计算机科学家想出了另外一种方法来实现并查集。在新的实现思路中,我们把每一个元素看做是一个节点,该节点只有一个指向其父亲的指针,也就是说parent[i]=j的意思就是i元素的父亲为j元素,因为 i 元素的父亲指针就是指向 j 节点的,如果一个元素没有父亲了,那么它的父亲指针就指向自己,这也是作为

2017-12-27 10:54:04 421

原创 并查集基础入门

在计算机科学中,并查集是一种树型的数据结构,用于处理一些不相交集合(Disjoint Sets)的合并及查询问题。有一个联合-查找算法(union-find algorithm)定义了两个用于此数据结构的操作:Find:确定元素属于哪一个子集。它可以被用来确定两个元素是否属于同一子集。Union:将两个子集合并成同一个集合。并且,在图的相关算法中需要使用到并查集来实现一

2017-12-26 18:34:08 459

原创 二分搜索树的删除节点操作

本节我们来讨论一下对二叉搜索树的删除节点操作。首先,我们先来研究一下稍微简单一点的问题,如何删除二叉树中的最小值和最大值。例如上图的这一棵二叉树中,最小值节点和最大值节点都在哪里呢?我们可以很清楚的从图中看出,13是该树的最小节点,42是该树的最大节点,且13节点位于树的最左边,而42位于树的最右边,这难道是一种巧合吗?当然不是,首先,让我们来回忆一下二叉树的一个非常重要的性质。

2017-12-23 21:50:45 7010 2

原创 二叉搜索树的广度优先遍历

在上一节中,我们学习了二叉树的而前序遍历,中序遍历,以及后续遍历。但是我们发现,上述三种遍历方式都使用到了递归,因此无论哪种遍历都是一直往深处遍历到不能遍历为止。那么,有没有什么方法能够将每一层的节点遍历完然后在遍历下一层的节点呢?能够解决这种问题呢,因此,接下来我们就要开始讨论二叉树的广度优先遍历。对于广度遍历,我们需要额外引进一个辅助工具,那就是我们熟悉的数据结构中的一种:队列。让我们

2017-12-19 19:28:19 794

原创 二分搜索树的遍历

对于一棵二叉树来说,如果我们想要把这棵树中的所有节点都给遍历一遍,那么我们就需要了解二叉树的遍历方式。二叉树的遍历方式分为以下三种:二叉树的一个简单的结构如下图所示: 对于其中的“前”。“中”,“后”,我们都可以理解为是根节点的访问顺序。遍历时,我们分为三个阶段:前 中 后对于前序遍历来说:也就是在前阶段访问根节点,中阶段访问左节点,后阶段访问右

2017-12-11 22:17:46 377

原创 二叉搜索树的节点插入,查找。

在讲解二分搜索树之前,我想先讲清楚一个东西,那就是递归,因为在后面的插入,查找操作都是利用递归去查找的,而且对于递归的理解也是一个难点,因此,以下是我对于递归的理解。,对于递归,我们不能用人脑去展开来想,所以,我们只需要把递归过程中的两个过程给想清楚就好了,一个是递归发生在终止条件的时候,还有一个是递归在不断缩小规模的过程中其中的一个情况,具体我们可以见下图:我们把最下面的

2017-12-04 21:19:34 912 4

空空如也

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

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