高级数据结构及其应用.ppt
《高级数据结构及其应用.ppt》由会员分享,可在线阅读,更多相关《高级数据结构及其应用.ppt(19页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、高级数据结构及其应用高级数据结构及其应用福建师大附中周成Czhoufjsdfz.org内容提要内容提要l一个简单的例子(块链)l检索树?及其应用(再做8数码)l并查集及其应用l二叉排序树及其应用圆桌问题(菜鸟级问题)l圆桌上围坐着2n个人其中n个人是好人,另外n个人是坏人。如果从第一个人开始数数数到第m个人,则立即处死该人,然后从被处死的人之后开始数数,再将数到的第m个人处死依此方法不断处死围坐在圆桌上的人。试问预先应如何安排这些好人与坏人的座位,能使得在处死n个人之后,圆桌上围坐的剩余的n个人全是好人。输入格式:输入格式:输入文件中的仅一行都有两个数依次为n和m,表示一个问题的描述信息,n3
2、2767,m32767。输出格式:输出格式:输出问题的解,问题的解可以用连续的若干行字符来表示,每行的字符数量不超过50,但是在问题的解中不允许出现空白字符和空行,用大写字母G表示好人大写字母B表示坏人。输入输出输入输出2 3 GBBG顺序表和块链顺序表和块链1234567891012345678910Head顺序表、链表的时间复杂度均约为O(n2)1238910两种数据结构下时间效率的比较两种数据结构下时间效率的比较编号NM算法一用时算法二用时1500004001.10s0.44s2327673276746.92s0.33s3327673276546.32s0.33s450000400009
3、3.96s0.60s算法一:顺序表算法二:块链结论:随着问题规模的进一步扩大,算法二与一相比,时间效率会更明显!检索树检索树l检索树是一种简单但用途广的数据结构。l有时可代替哈希表l它可以用来储存各种元素类型范围一定的串,例如字符串,数串等。l例如用检索树来储存abc,abd,bca,bcb,bcd这个字符串集合,可表示为:检索树检索树l由图可知,在一棵检索树中查找一个目标只需要O(L)的时间,L为目标的串长度,比盲目比较要快得多。在空间上,由于检索树是动态创建的,避免了不必要的浪费。检索树检索树8数码问题中的应用数码问题中的应用l八数码问题是一题经典的广度搜索问题。l问题1:简单地采用广度搜
4、索对步数较多和无解的情况就无法得出结果。l可以使用双向搜索进行优化。l问题2:但在判重时仍需要很大的复杂度导致了整个算法的复杂度很大。l解决办法:可以使用检索树来存储所有已扩展的状态进行判重,复杂度为O(8),大大提高了算法的效率。l8数码的检索树只用到了8层,但不必把最后一层开出来,所以在实际内存中之开了7层的空间。状态在检索树的表示状态在检索树的表示检索树数据结构的表示:检索树数据结构的表示:Type Ttree =ty;ty =array0.9of Ttree;Var Tree:Ttree;检索某状态是否出现的函数检索某状态是否出现的函数oklfunction ok(t:longint;
5、s:string):longint;l判断状态s是否在检索树中出现,若出现,则返回相应1或2(分别代表正向和反向搜索时产生),否则在检索树并建立该状态l var p:Ttree;l i:integer;l 函数函数okl beginl p:=tree;l for i:=1 to 7 dol beginl if psi=nil then 该状态末出现,则建立l beginl new(psi);fillchar(psi,sizeof(psi),0);l end;l p:=psi;指针下移到下一层l end;函数函数oklif ps8=nil then 第8个数码所指的指针为空,表示该状态末出现lb
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 高级 数据结构 及其 应用
限制150内