数据结构基础知识之查找

本文介绍了多种数据结构和查找算法,包括平均查找长度的概念,二分查找的时间复杂度,分块查找的原理,B树和B+树的特性,散列表的构造方法和冲突解决策略,以及二叉排序树、平衡二叉树和红黑树在树形结构中的应用。
摘要由CSDN通过智能技术生成

一、基本概念

1.平均查找长度

ASL=∑PiCi (i=1,2,3,…,n)。其中:Pi 为查找表中第i个数据元素的概率,Ci为找到第i个数据元素时已经比较过的次数,n为查找表的长度。

二、折半查找 / 二分查找

详细 链接
(1)时间复杂度: O(logn)
(2)平均查找长度: log(n+1) -1

三、分块查找 / 索引顺序查找

(1)基本思想: 将查找表分为若干子块。块内可无序,块之间有序。
(2)查找方式: 顺序查找/折半查找索引表,确定待查记录所在块,在块内进行顺序查找。
(3)ASL: =L1+L2=(S² +2S+n)/2S
n:长度,b:均分的块数,S:每块的记录数

四、B树

(1)概述: 又称多路平衡查找树,是一个一般化的二叉查找树(binary search tree),可以拥有多于2个子节点。
(2)m阶B树:
1、空树
2、m叉树:
①每个结点至多有m棵子树,m-1个关键字。
②叶节点:也称外部结点或失败结点,都出生在同一层,并不带信息。
③除根节点外的非叶子结点,至少有⌈ m/2 ⌉棵子树,⌈ m/2 ⌉-1个关键字。
④结点中关键字个数:⌈ m/2 ⌉-1<=n<=m-1。
⑤平衡因子均等于0。
(3)树的高度:
1.h+1层至少有2(⌈ m/2 ⌉)^(h-1)个结点。
2.log m (n+1)<=h<=[log ⌈ m/2 ⌉ (n+1)/2]+1。

五、B+树

(1)定义: B+树是B树的一种变形形式,B+树上的叶子结点存储关键字以及相应记录的地址,叶子结点以上各层作为索引使用。
(2)性质:
1.结点子树个数和关键字格数相等。
2.所有分支结点仅包含各子结点中关键字的最大值及指针。
3.关键字个数n:⌈ m/2 ⌉<=n<=m。

六、散列表

建立了关键字和存储地址之间的一种直接映射关系。

1.构造方法

(1).直接定址法: H(key)=key 或H(key)=a*key+b
    直接取关键字的某个线性函数值为散列地址。适合关键字的分布 基本连续的情况。
(2).除留余数法:H(key)=key%p
    其中p<=m,p取不大于m,但最接近或等于m的质数p
(3).数字分析法:
    收集所有可能出现的键值,排列在一起,对键值的每一位进行分析,选择分布较均匀若干位组成散列地址。
(4).平方取中法:
    取关键字的平方的中间几位作为散列地址。

2.处理冲突的方法:

(1)开放地址法:Hi=(H(key)+di)%m

  di为增量序列,di=0,1,2,…,k(k<=m-1)
 ①线性探测法: di=0,1,2,…,m-1。
        缺点查找效率低(大量元素在相邻地址上聚集)
 ②平方探测法/二次探测法: di=0²,1²,-1²,…,k²,-k²(k<=m/2)
        散列表长度m必须是一个可以表示成4k+3的素数.
 ③双散列表法
 ④伪随机法

(2)拉链法:线性链表

3.查找效率性能分析

(1)散列函数
(2)装填因子: a=

七、树

1.二叉排序树(BST)

(1)基本思想: 左子树结点值<根结点值<右子树结点值。
(2)性质: 中序遍历,可得递增有序序列。
(3)查找效率: O(logn)

2.平衡二叉树(BBT)

(1)基本思想: 左、右子树高度差的绝对值不超过1。
(2)性质: 节点公式:F(n)=F(n-1)+F(n-2)+1.
F(n-1)为左子树的节点数量,F(n-2)为右子树的节点数量.
F(0)=0,F(1)=1,F(2)=2.
(3)最大深度/平均查找长度: O(logn)

3.红黑树

(1)基本思想: 是一种自平衡二叉查找树。
(2)性质:
左根右
根叶黑:根节点和叶结点都是黑色的。
不红红:不存在两个相邻的红结点(红结点的父节点和孩子结点均是黑色的)。
黑路同:对于每个结点,从改结点到任一叶节点的简单路径上,所含黑结点的数量相同。
(3)概念和结论:
黑高:从某结点出发(不含该结点),到达一个叶结点的任一简单路径上的黑结点总数。
结论1:从根到叶结点的最长路径不大于最短路径的2倍。
结论2:n个内部结点的红黑树的高度 h <=2log(n+1)。

注:如有错误,欢迎指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值