摘要: 上一节介绍了有关哈希表及其构造过程的相关知识,本节将介绍如何利用哈希表实现查找操作。 在哈希表中进行查找的操作同哈希表的构建过程类似,其具体实现思路为:对于给定的关键字 K,将其带入哈希函数中,求得与该关键字对应的数据的哈希地址,如果该地址中没有数据,则证明该查找表中没有存储该数据,查找失败:如果哈 阅读全文
posted @ 2018-05-21 16:09 程序员进阶笔记 阅读(931) 评论(0) 推荐(0)
摘要: 前面介绍了静态查找表以及动态查找表中的一些查找方法,其查找的过程都无法避免同查找表中的数据进行比较,查找算法的效率很大程度取决于同表中数据的查找次数。而本节所介绍的哈希表可以通过关键字直接找到数据的存储位置,不需要进行任何的比较,其查找的效率相较于前面所介绍的查找算法是更高的。 哈希表的构建 在初中 阅读全文
posted @ 2018-05-21 16:05 程序员进阶笔记 阅读(2854) 评论(0) 推荐(0)
摘要: 红黑树(R-B TREE,全称:Red-Black Tree),本身是一棵二叉查找树,在其基础上附加了两个要求: 树中的每个结点增加了一个用于存储颜色的标志域; 树中没有一条路径比其他任何路径长出两倍,整棵树要接近于“平衡”的状态。 这里所指的路径,指的是从任何一个结点开始,一直到其子孙的叶子结点的 阅读全文
posted @ 2018-05-21 15:45 程序员进阶笔记 阅读(818) 评论(0) 推荐(1)
摘要: 上一节介绍如何使用二叉排序树实现动态查找表,本节介绍另外一种实现方式——平衡二叉树。平衡二叉树,又称为 AVL 树。实际上就是遵循以下两个特点的二叉树: 每棵子树中的左子树和右子树的深度差不能超过 1; 二叉树中每棵子树都要求是平衡二叉树; 其实就是在二叉树的基础上,若树中每棵子树都满足其左子树和右 阅读全文
posted @ 2018-05-21 15:03 程序员进阶笔记 阅读(1102) 评论(0) 推荐(0)
摘要: 前几节介绍的都是有关静态查找表的相关知识,从本节开始介绍另外一种查找表——动态查找表。 动态查找表中做查找操作时,若查找成功可以对其进行删除;如果查找失败,即表中无该关键字,可以将该关键字插入到表中。动态查找表的表示方式有多种,本节介绍一种使用树结构表示动态查找表的实现方法——二叉排序树(又称为“二 阅读全文
posted @ 2018-05-21 14:51 程序员进阶笔记 阅读(11212) 评论(0) 推荐(0)
摘要: 前面章节所介绍的有关在静态查找表中对特定关键字进行顺序查找、折半查找或者分块查找,都是在查找表中各关键字被查找概率相同的前提下进行的。 例如查找表中有 n 个关键字,表中每个关键字被查找的概率都是 1/n。在等概率的情况,使用折半查找算法的性能最优。 而在某些情况下,查找表中各关键字被查找的概率是不 阅读全文
posted @ 2018-05-21 14:39 程序员进阶笔记 阅读(2898) 评论(0) 推荐(1)
摘要: 本节介绍一种在顺序查找的基础上对其进行改进的算法——分块查找算法。 分块查找,也叫索引顺序查找,算法实现除了需要查找表本身之外,还需要根据查找表建立一个索引表。例如图 1,给定一个查找表,其对应的索引表如图所示: 图 1 查找表及其对应的索引表 图 1 中,查找表中共 18 个查找关键字,将其平均分 阅读全文
posted @ 2018-05-21 14:29 程序员进阶笔记 阅读(13829) 评论(0) 推荐(2)
摘要: 折半查找,也称二分查找,在某些情况下相比于顺序查找,使用折半查找算法的效率更高。但是该算法的使用的前提是静态查找表中的数据必须是有序的。 例如,在{5,21,13,19,37,75,56,64,88 ,80,92}这个查找表使用折半查找算法查找数据之前,需要首先对该表中的数据按照所查的关键字进行排序 阅读全文
posted @ 2018-05-21 09:45 程序员进阶笔记 阅读(22548) 评论(0) 推荐(3)
摘要: 通过前面对静态查找表的介绍,静态查找表即为只做查找操作的查找表。 静态查找表既可以使用顺序表表示,也可以使用链表结构表示。虽然一个是数组、一个链表,但两者在做查找操作时,基本上大同小异。 本节以静态查找表的顺序存储结构为例做详细的介绍。 顺序查找的实现 静态查找表用顺序存储结构表示时,顺序查找的查找 阅读全文
posted @ 2018-05-21 09:40 程序员进阶笔记 阅读(9248) 评论(1) 推荐(0)
摘要: 在日常生活中,几乎每天都要进行一些查找的工作,在电话簿中查阅某个人的电话号码;在电脑的文件夹中查找某个具体的文件等等。本节主要介绍用于查找操作的数据结构——查找表。 查找表是由同一类型的数据元素构成的集合。例如电话号码簿和字典都可以看作是一张查找表。一般对于查找表有以下几种操作: 在查找表中查找某个 阅读全文
posted @ 2018-05-21 09:36 程序员进阶笔记 阅读(483) 评论(0) 推荐(0)
摘要: 本章通过介绍不同的查找表,来讲解多种查找算法的实现,例如顺序查找、二分查找、分块查找等。同时本章中还会借用学过的树结构来实现查找具体数据的目的。 阅读全文
posted @ 2018-05-21 09:34 程序员进阶笔记 阅读(435) 评论(0) 推荐(0)
摘要: 本节介绍一种解决系统中内存碎片过多而无法使用的方法——边界标识法。 在使用边界标识法的系统管理内存时,可利用空间表中的结点的构成如图 1: 图 1 结构构成 每个结点中包含 3 个区域,head 域、foot 域 和 space 域: space 域表示为该内存块的大小,它的大小通过 head 域中 阅读全文
posted @ 2018-05-21 09:32 程序员进阶笔记 阅读(1605) 评论(0) 推荐(0)