05 2020 档案
摘要:sql语句的顺序为: FROM->WHERE->GROUP BY->HAVING->SELECT->ORDER BY 这只是个粗略的总结,具体的执行根据DBMS的不同而不同。一定要记住SELECT子句的执行顺序在GROUP BY子句之后,ORDER BY子句之前。因此,在执行GROUP BY子句时,
阅读全文
摘要:根据对关系型数据库赋予的指令类型的不同,SQL语句可以分为以下三类。 1.数据定义语句:用来创建或删除存储数据用的数据库以及数据库中的表等对象。数据定义语句包含以下几种指令。 CREATE:创建数据库和表等对象 DROP:删除数据库和表等对象 ALTER:修改数据库和表等对象的结构 2.数据操纵语言
阅读全文
摘要:与字典数据结构中通过比较待查关键字和元素关键字来实现搜索不同,我们试图通过算术运算将关键字转换成表的地址来标记表中的元素。该方法使得关键字转变为表地址范围内的互不相等的整数。该搜索算法称为散列。 散列算法由两部分组成。首先是能够将查询关键字转换成表地址的散列函数。理想情况是不同关键字映射到不同的地址
阅读全文
摘要:我们把2-3-4树中的四节点表示为由红链接连接起来的三个二节点,把三节点表示为由单一红链接连接起来的两个二节点。三节点中的红链接可以是一个左链接或一个右链接,因此存在两种表示每个三节点的方法。在任何树中,每个节点都被一个链接所指向,所以对链接染色相当于对节点染色。相应地,我们对每个节点利用额外的一位
阅读全文
摘要:根插入方法中,我们通过旋转把插入节点带到树根位置。这里,我们考虑如何使得旋转操作使树达到平衡。我们不考虑递归地使用把新近插入节点带到树顶部的单一旋转操作,而考虑把节点从作为树根的孙子(根的两代,也就是与根相距两层)之一的一个位置带到树顶部的两个旋转操作。首先,我们执行一次旋转,使节点成为树根的一个孩
阅读全文
摘要:在一个二叉搜索树中删除带有给定关键字的节点。这个删除操作的实现删除在BST中遇到的第一个带有给定关键字v的节点。它从上向下处理,为适当的子树作递归调用,直到要删除的节点位于树根处。然后,它用两棵子树结合的结果取代该节点--右子树中最小的节点成为树根,接着把它的左链接设置成指向左子树。 1 priva
阅读全文
摘要:为了防止二叉搜索树中性能大大降低的最坏情况出现,我们可以采用一些方法,如:随机化、发散化和最优化来使其达到平衡。 下面函数使用分区函数在线性时间内使一棵二叉搜索树达到完美平衡状态。我们先划分以便把中值节点放入树根,然后(递归地)对子树执行同样的操作。 1 void balanceR(link& h)
阅读全文
摘要:划分操作为找出二叉树中第k个最小关键字的数据项,并通过一些操作使其位于树根。 为了找出一棵二叉搜索树中含有第k个最小关键字的数据项,我们检查左子树的节点数量。若那里存在k个节点,那么我们返回树根处的数据项。否则,若左子树拥有k个以上节点,我们就递归地在那里寻找第k个最小的节点。如果这两个条件都不成立
阅读全文
摘要:对二叉树可以进行底部插入,也可以进行根部插入,使得每个新节点插入到树根。 假设被插入数据项的关键字大于树根的关键字。我们可以这样着手建造一棵新树:把新数据项放入一个新的根节点,把原有根作为左子树,原有根的右子树作为新树的右子树。然而右子树也许包含一些较小的关键字,所以我们必须做更多的工作才能完成这次
阅读全文
摘要:自上而下2-3-4树可以保证每个插入和搜索操作的开销为该树大小的对数。 2-3-4搜索树是一棵或者为空、或者由以下三类节点组成的树:二节点,具有一个关键字、一个左链接指向带有较小关键字的一棵树、一个右链接指向带有较大关键字的一棵树;三节点,具有两个关键字、一个左链接指向带有较小关键字的一棵树、一个中
阅读全文