摘要: 冲突解决的策略 尽管散列函数的目标是使得冲突最少,但实际上冲突是无法避免的。因此,我们必须研究冲突解决策略。冲突解决技术可以分为两类:开散列方法( open hashing,也称为拉链法,separate chaining )和闭散列方法( closed hashing,也称为开地址方法,open 阅读全文
posted @ 2017-09-17 17:52 赵安之 阅读(1092) 评论(0) 推荐(0) 编辑
摘要: 散列表 散列表是一个包含关键字的具有固定大小的数组,表的大小记为 tablesize 。每个关键字被映射到0到 tablesize 中的某个数,并被放到适当的单元中,这个映射称为散列函数。散列函数应尽可能地在单元之间均匀分配关键字。最后还需要解决关键字冲突的情况,即映射到同一个值。 通常需要均匀的分 阅读全文
posted @ 2017-09-17 17:49 赵安之 阅读(543) 评论(0) 推荐(0) 编辑
摘要: 散列函数 在以下的讨论中,我们假设处理的是值为整型的关键码,否则我们总可以建立一种关键码与正整数之间的一一对应关系,从而把该关键码的检索转化为对与其对应的正整数的检索;同时,进一步假定散列函数的值落在0到M-1之间。散列函数的选取原则是:运算尽可能简单;函数的值域必须在散列表的范围内;尽可能使得结点 阅读全文
posted @ 2017-09-17 17:49 赵安之 阅读(3719) 评论(0) 推荐(0) 编辑
摘要: 0)引论 左堆的合并,插入,删除最小的时间复杂度为O(logN)。二项队列就是为了对这些结果进一步提高的一种数据结构。利用二项队列,这三种操作的最坏时间复杂度为O(logN),但是插入的平均时间复杂度为O(1)。 1)二项队列 二项队列不是一棵树,它是一个森林,由一组堆序的树组成的深林,叫做二项队列 阅读全文
posted @ 2017-09-17 17:48 赵安之 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 简介 设计一种堆结构像二叉堆那样高效的支持合并操作而且只使用一个数组似乎很困难。原因在于,合并似乎需要把一个数组拷贝到另一个数组中去,对于相同大小的堆,这将花费O(N)。正因为如此,所有支持高效合并的高级数据结构都需要使用指针。 像二叉堆那样,左式堆也有结构性和堆序性。不仅如此,左式堆也是二叉树,它 阅读全文
posted @ 2017-09-17 17:45 赵安之 阅读(341) 评论(0) 推荐(0) 编辑
摘要: d-堆 二叉堆因为实现简单,因此在需要优先队列的时候几乎总是使用二叉堆。d-堆是二叉堆的简单推广,它恰像一个二叉堆,只是所有的节点都有d个儿子(因此,二叉堆又叫2-堆)。下图表示的是一个3-堆。注意,d-堆要比二叉堆浅得多,它将Insert操作的运行时间改进为。然而,对于大的d,DeleteMin操 阅读全文
posted @ 2017-09-17 17:42 赵安之 阅读(697) 评论(0) 推荐(0) 编辑
摘要: 二叉堆简介: 优先队列是先进先出的模型 二叉堆是实现优先队列的一种常用的方式,以下简称堆 二叉堆是一颗完全填满的二叉树,完全二叉树的高为log(N) 我们可以用一个数组表示完全二叉树(二叉堆) 在这个数组中,对于任意i位置的元素,其左孩子在2i的位置上,其右孩子在2i+1位置上,其父节点在i/2位置 阅读全文
posted @ 2017-09-17 17:33 赵安之 阅读(393) 评论(0) 推荐(0) 编辑
摘要: 时间复杂度的对比,d-堆插入较快,合并较快 阅读全文
posted @ 2017-09-17 17:28 赵安之 阅读(340) 评论(0) 推荐(0) 编辑
摘要: B树可以分成很多种, B-树(通常也只称为B树)是一种多路搜索树(并不是二叉的): 1.定义任意非叶子结点最多只有M个儿子;且M>2; 2.根结点的儿子数为2到M个; 3.除根结点以外的非叶子结点的儿子数为M/2到M个; 4.每个结点存放至少M/2-1(取上整 5/2=2)和至多M-1个关键字;(至 阅读全文
posted @ 2017-09-17 17:26 赵安之 阅读(2076) 评论(0) 推荐(0) 编辑
摘要: 本文为转载文章 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢! 我们讨论过,树的搜索效率与树的深度有关。二叉搜索树的深度可能为n,这种情况下,每次搜索的复杂度为n的量级。AVL树通过动态平衡树的深度,单次搜索的复杂度为log(n) 阅读全文
posted @ 2017-09-17 17:16 赵安之 阅读(256) 评论(0) 推荐(0) 编辑
摘要: 每次检索某个节点,进行旋转,保证可能经常需要检索的节点深度不为logN, 平均检索M次的平均时间为MlogN 插入位置和最近不平衡结点成一字型, 对插入位置的父节点进行单旋转 插入位置和根节点距离为1 对根节点进行单旋转 插入位置和最近不平衡位置成之字型, 先对插入位置的父节点进行单旋转 在对祖父节 阅读全文
posted @ 2017-09-17 17:10 赵安之 阅读(563) 评论(0) 推荐(0) 编辑