1 / 93
文档名称:

静态搜索结构动态搜结构散列可扩充散列.ppt

格式:ppt   页数:93页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

静态搜索结构动态搜结构散列可扩充散列.ppt

上传人:zhangkuan14312 2015/4/29 文件大小:0 KB

下载得到文件列表

静态搜索结构动态搜结构散列可扩充散列.ppt

文档介绍

文档介绍:静态搜索结构
动态搜索结构
散列
可扩充散列
第十章搜索
查找搜索
搜索结构同一数据类型(纪录)的元素
构成的数据集合。
搜索在数据集合中寻找满足条件的对
象(数据元素)。
关键字数据元素中某个字段(数据项)
的值。
主关键字唯一地表示一个纪录。
次关键字标识若干纪录
搜索成功找到满足条件的数据对象
报告该对象在结构中的位置
给出整个纪录的信息
搜索失败搜索不成功
静态搜索搜索结构在搜索前后不发生变化
动态搜索搜索的同时执行插入或删除
结构自行调整
提高效率先排序,分类,编目,索引
优化结构
一、静态搜索结构
基于数组的数据表类
顺序表——线性表、数组、链表。
(1) 顺序搜索从头至尾逐个比较
最快O(1) 最慢O(n)
搜索成功的等概率平均时间复杂性 O((n+1)/2)
(1+2+3+······+n) /n=(n+1)/2
搜索失败O(n+1)
搜索的等概率平均时间复杂性 O(3(n+1)/4)
搜索成功失败各半
((1+2+······+n)+n(n+1)) /2n =3(n+1)/4
(2)有序表的搜索
折半搜索
对已排序的搜索结构先确定中点,比较待查关键字与中点关键字的大小,反复直到成功。
求n个数据折半查找的等概率成功搜索的平均时间复杂性
1 2 3 4 5 6 7 8 9 10
1
2
2
3
3
3
3
4
4
4
1+2*2+4*3+3*4=29 O(29/10)
S=1+2*2+4*3+8*4+······+2k-1*k
= 1+2*2+3*4+4*8+······+k*2k-1
k
s =∑j·2j-1 其中 n=2k-1
j=1
1
2
2
3
3
3
3
4
4
4
满二叉树n个数据的总查找次数:
4
4
4
4
4
满二叉树n个数据的总查找次数: k s =∑j·2j-1 其中 n=2k-1 j=1
S=1+2·2+3·4+4*8+5*16+·····+k·2k-1
= 1+2+4+8+16+···+2k-1+
2+2·4+3·8+4·16+····+(k-1)·2k-1
= 1+2+4+8+16+···+2k-1+
2·(1+2·2+3·4+4*8+5*16+·····+(k-1)·2k-2)
= 1+2+4+···+2k-1+2·(1+2+4+···+2k-2)+
22·(1+2+4+···+2k-3)+·····+2k-2·(1+2)+2k-1
=2k-1+2·(2k-1-1)+22·(2k-2-1)+·····+2k-2·(22-1)+ 2k-1(2-1)
=k·2k-(1+2+4+···+2k-1)=k·2k-(2k-1)=(k-1)·2k+1
满二叉树n个数据的总查找次数: k s =∑j·2j-1 其中 n=2k-1 j=1
令s=f(k), k=1,2,3,4,······
f(1)=1 f(2)=5 f(3)=17 f(4)=49
f(5)=129 ·······
f(k)-1= 0, 22, 24, 3·24,27,······
= 0·21, 1·22, 2·23, 3·24,4·25·····
猜想 f(k)-1=(k-1)·2k
k f(k)= s =∑j·2j-1 其中 n=2k-1 j=1
f(k)-1=(k-1)2k
证明
1) f(1)-1=0
2) f(k+1)-1=f(k)+(k+1)·2k –1
= (k-1)2k+ (k+1)·2k
=2·k·2k=k·2k+1
=(k+1-1)·2k+1
S=(k-1)2k+1
满二叉树n个数据的总查找次数: k s =∑j·2j-1 其中 n=2k-1 j=1
S= (k-1)·2k+1
由 n=2k-1 得 k=log2(n+1)
S=(n+1)(log2(n+1)-1)+1
= (n+1)log2(n+1)-n
满二叉树n个数据的搜索成功平均概率时间复杂性
((n+1)/n) log2(n+1)-1
当n>50时近似于
log2(n+1)-1