第七章小结--查找
Posted zasmn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第七章小结--查找相关的知识,希望对你有一定的参考价值。
第七章 查找
一、基本概念
(1)查找表是由同一类型的数据元素(或记录)构成的集合。
查找表可分为静态查找表和动态查找表,若在查找的同时对表做修改操作则为动态查找表;查找可分为成功和不成功
(2)关键字是数据元素(或记录)中的某个数据项的值,可以用于标识一个数据元素(或记录)。
若关键字可以唯一标识一个记录,则称主关键字(对不同的记录,其主关键字均不同);
反之称用以识别若干记录的关键字为次关键字;
当只有一个数据项时关键字为该数据元素的值。
(3)平均查找长度:为确定记录在查找表中的位置,需和给定值进行比较的关键字个数的期望值称为查找算法在查找成功时的平均查找长度(Average Search Length,AVL)
对于含有n个记录的表:
,
Pi为查找表中第i个记录的概率,且 ,Ci为找到表中关键字与给定值相等的第i个记录时和给定值已进行过比较的关键字个数。
二、查找
1、线性表
(1)顺序查找
一般顺序查找 & 设置监视岗哨的顺序查找(哨兵:ST.R[0].key=key)
时间复杂度O(n);
(2)折半查找(二分查找)
线性表需为顺序存储结构,且为有序表;
折半查找在查找时成功与不成功时和给定值进行比较的关键字个数最多不超过树的深度,即。
时间复杂度O(n);
(3)分块查找(索引顺序查找)
索引表按关键字有序,则表或者有序或分块有序。
2、树表
(1)二叉排序树(二叉查找树)
左右子树也分别为二叉排序树。基本操作(查找、插入、创建、删除)或空;或非空。
非空:1、左子树非空,则左子树上所有结点的值均小于根结点的值
2、右子树非空,则右子树上所有结点的值均大于根结点的值
(2)平衡二叉树(AVL树)
特征:1、左子树和右子树的深度之差的绝对值不超过1
2、左右子树也是平衡二叉树
最小平衡树:找到离插入点最近且平衡因子绝对值超过1的祖先结点,以该结点为根的子树成为最小平衡子树主要
(3)B-树
平衡多叉查找树,主要用于磁盘管理系统中的目录管理以及数据库系统中的索引组织
(4)B+树
更适合于文件索引系统
3、散列表
(1)散列函数和散列地址、散列表
(2)冲突和同义词
对不同关键字可能得到同一散列地址成为冲突;具有相同函数值的关键字对该散列函数来说称为同义词。
(3)散列函数的构造方法
a.数字分析法
选取分布较均匀的若干位作为散列地址
b.平方取中法
c.折叠法
移位折叠(分割后每一部分最低位对齐) & 边界折叠(两个相邻部分沿边界来回折叠)
d.除留余数法
一般选择小于表长的最大质数去除关键字得到的余数为散列地址,H(key)=key%p
(4)处理冲突的方法
a.开放地址法
(1)线性探测法 di= 1,2,3,...,m-1
(2)二次探测法 di= 1*2,-1*2,2*2,-2*2,...
(3)伪随机探测法 di=伪随机数序列
b.链地址法
二次聚集(堆积):两个第一个散列地址不同的记录争夺同一个后继散列地址的现象,即在处理同义词的冲突过程中又添加了非同义词的冲突。
(5)散列表的查找
装填因子:表中填入的记录数 / 散列表的长度
取决因素:散列函数、处理冲突方法、散列表的装填因子
n 为散列表中记录个数,Ci为成功查找第i个记录所需的比较次数。
r 为散列函数取值个数,Ci为散列函数取值为i时查找失败的比较次数。
以上是关于第七章小结--查找的主要内容,如果未能解决你的问题,请参考以下文章