数据结构之三大查找
2016-03-08 22:57
134 查看
[code] 数据结构之三大查找
一.静态查找表
附:ASL(平均查找长度)=∑ (1-n) P(i)C(i)
P(i):查找表中第i个记录的概率(个人理解:比较一次正确概率)。
c(i):当给定值与表中记录相等时候,已经比较的次数,C(i)随过程不同。
1.顺序表的查找
条件:顺序表或者线性链表示的查找表
成功查找时平均查找长度:(n+1)/2
失败查找时平均查找长度:3(n+1)/4
2.有序表的查找
(1) 折半查找
成功查找时平均查找长度:[(n+1)㏒₂(n+1)]/2
(2)菲波那切查找
适用:关键字均匀,表长大,其平均性能比折半查找好
3.静态树表的查找(各记录查找概率不等时)
(1)静态最优查找树(权值高的在上面)
PH值最小。
代价太高,不讨论→_→
(2)次优查找树
PH值近似最小
具体实现字数太多,这里只列概念和框架,具体参见吴伟民办数据结构P223
4.索引顺序表的查找
(1)分块查找,又称索引顺序查找。
分块有序:第一块数据最小,依次增大。
方法:每块有个最大值索引,和开始地址,比较就可以得到数据所在数据块,然后在块内可以顺序查找或者折半查找(必须有序)。
二.动态查找表
概念:表本身是在查找过程中生成的,即找到关键字,成功返回,否则插入。
1.二叉排序树和平衡二叉树。
(1)二叉排序树(二叉查找树)
左节点<跟节点<右节点
有类似于折半查找的特性,链表,插入不需要移动。
删除(看不懂)现成算法在P230.
(2)平衡二叉树(***L树)
深度:左右子树深度差不超过1
平衡因子:绝对值不大于一
有点难,先跳过
2.b-树和b+树.
(1)b-树
一棵m阶的b-树,或为空树,或满足下面特性的m叉树
①树中每个节点至多有m棵子树。
②若不是叶子节点,至少有2棵子树。
③若不是叶子节点,至少有m/2棵子树。
④所有非终节点包含以下信息(n关键字个数,A(i)指向子树指针,K(i)存在关系A(i-1)
相关文章推荐
- 数据结构之杨氏矩阵
- opencv基础数据结构
- 数据结构 第二章 线性表(1)顺序线性表的实现
- 数据结构(26)--排序篇之归并排序
- 数据结构:2-3树
- 【Codeforces Round 345 (Div 1) C】【并查集缩环+拓扑最长路】Table Compression nm矩形权值缩小大小关系不变
- 数据结构(25)--排序篇之选择排序
- Python -- 数据结构与包机制
- 数据结构(24)--排序篇之交换排序
- 学习数据结构和算法动态可视化工具
- 数据结构 第一章 绪论
- 【面试经典题之字符串】实现一个算法,确定一个字符串的所有字符是否全都不同。假设不允许使用额外的数据结构
- 数据结构(23)--排序篇之插入排序
- Android Binder机制(二) Binder中的数据结构
- R语言中的数据结构
- 阿里巴巴实习内推二面经验总结(客户端开发岗)
- 2015年大二上-数据结构-查找-2-(1)-HashTable
- 数据结构笔记——
- 【数据结构】线性表(数组实现)
- 小蚂蚁学习数据结构(35)——直接插入排序