第七次日志

<查找>

列表:由同一类型的数据元素(或记录)构成的集合,可利用任意数据结构实现。

关键字:数据元素的某个数据项的值,用它可以标识列表中的一个或一组数据元素。

主关键字:惟一标识列表中的一个数据元素。

次关键字:不是主关键字,就为次关键字。

当数据元素仅有一个数据项时,数据元素的值就是关键字。

平均查找长度(ASL):为确定数据元素在列表中的位置,需和给定值进行比较的关键字个数的期望值,称为查找算法在查找成功时的平均查找长度。

假设查找每个数据元素的概率相等,即Pi=1/n
• 则顺序查找算法的平均查找长度为:
ASL=11/n+21/n+…+n1/n
=(1+2+…+n)
1/n
=(n+1)/2

假设列表长度为n,从最后一个元素开始找起:
• 查找第 i 个元素,需进行(n-i+1)次比较

• 若顺序查找法从第一个元素开始找起,则平均
查找长度为((n+1)/2,一样! )

二叉排序树(二叉查找树)
定义:二叉排序树或者是一棵空树,或者是具有如下性质的二叉树:

若它的左子树非空,则左子树上所有结点的值均小于它的根结点的值;

若它的右子树非空,则右子树上所有结点的值均大于(或大于等于)它的根结点的值;

它的左、右子树也分别为二叉排序树。

结点的平衡因子--Balance Factor
• 定义:结点左子树深度与右子树深度之差。
• AVL树任一结点平衡因子只能取 -1, 0, 1
• 如果一个结点的平衡因子的绝对值大于1,则这棵二叉搜索树就失去了平衡, 不再是AVL树。

计算式查找法—哈希法
基本思想:首先在元素的关键字 k 和元素的存储位置 p 之间建立一个对应关系 f,使得 p=f(k),f 称为哈希函数。 

创建哈希表时,把关键字为 k 的元素直接存入地址为 f(k) 的单元;

以后当查找关键字为 k 的元素时,再利用哈希函数计算出该元素的存储位置 p=f(k),从而达到按关键字直接存取元素的目的。

伪随机数法
 采用一个伪随机函数做哈希函数,即:h(key)=random(key)。

除留取余数法
 假设哈希表长为 m,p 为小于等于 m 的最大素数,则哈希函数为: H(k)=k%p 其中 % 为模 p 取余运算。

开放定址法(再散列法)
根据再散列函数形式:
Hi=(H(key)+di)% m i=1,2,…,n di的取值方式不同,相应的再散列方式主要有以下三种:

  1. 线性探测再散列 (线性探查法)
  2. 二次探测再散列
  3. 伪随机探测再散列
posted @ 2020-06-11 22:18  ccc19  阅读(94)  评论(0编辑  收藏  举报