算法合集之《基本数据结构在信息学竞赛中的应用》.ppt
《算法合集之《基本数据结构在信息学竞赛中的应用》.ppt》由会员分享,可在线阅读,更多相关《算法合集之《基本数据结构在信息学竞赛中的应用》.ppt(38页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、基本数据结构在信息学竞赛中的应用安徽省芜湖市第一中学朱晨光 IOI2006中国国家集训队论文安徽省芜湖市第一中学 朱晨光引言n题目难应用高级数据结构基本数据结构!n本篇论文将介绍几种基本数据结构在信息学竞赛中的应用,并通过几道例题集中体现这些数据结构的重要作用。n编程复杂度高n容易出错第一部分基本数据结构的介绍n一、线性表(线性表的顺序存储结构)b+(maxlen-1)Lb+nLnanb+(n-1)Liaib+(i-1)L2a2b+L1a1b元素在线性表中的序号内存状态存储地址空闲线性表n二、线性表的链式存储结构线性链表:ZHAOQIANSUNhead线性表的链式存储结构循环链表:ZHAOQI
2、ANSUNhead线性表的链式存储结构双向链表:ZHAOQIAN SUNhead栈a1a2an删除插入栈顶栈底队列a1 a2 a3 an队头队尾入队列出队列第二部分基本数据结构的应用栈的应用 例1 求01矩阵中最大的全零矩形 线性表的应用 例2 营业额统计队列的应用 例3 瑰丽华尔兹线性表的应用营业额统计n给定N(1N32767)天的营业额a1,a2,an.n定义一天的最小波动值等于 min|该天以前某一天的营业额-该天营业额|n特别地,第一天的最小波动值即为a1 试求N天的最小波动值之和n例如:N=3,a1=9,a2=3,a3=8,则各天最小波动值依次为9,6,1,和为16分析 这道题目的规
3、模很大,如果简单地用两重循环解决,时间复杂度高达O(N2),难以满足要求。算法低效的原因在于没有高效地将数据组织起来,而是松散地存储在数组中,导致对于每一个营业额都需要检查前面所有的营业额。分析实际上,有一种高级数据结构平衡树可以解决这个问题。我们可以在将一天的营业额插入平衡树的过程中得到该天的最小波动值。方法是求出所有在插入路径上的数字与改天营业额差的绝对值,从中取出最小值。这种算法的时间复杂度为O(Nlog2N).进一步改进平衡树左旋,右旋,双旋高效高出错率Yes!那么,基本数据结构能否在这里得到应用呢?应用基本数据结构双向链表n将这N个元素进行排序,得到序列c,同时记录原来第i个元素在排
4、序后的位置bin将排序后的序列在静态数组中建成一个双向链表 n按照从an到a1的顺序依次处理每个元素 双向链表n对于an,查看bn的前驱prebn与后继nextbn所指的数n最小波动值必然是an与这两个数中的某一个的差的绝对值n处理完an后,我们把它从双向链表中删除,接着处理an-1动画演示9 3 8a:3 8 9c:3 1 2b:389最小波动值为min|8-3|,|8-9|=min6,1=139最小波动值为min|3-9|=69最小波动值为9最小波动值总和为1+6+9=16时间复杂度分析排序O(Nlog2N)建表O(N)处理O(N)O(Nlog2N)小结平衡树编程复杂度高基本数据结构双向链
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基本数据结构在信息学竞赛中的应用 算法 基本 数据结构 信息学 竞赛 中的 应用
限制150内