高中信息技术浙教版(2019)选修1 第五章 课时1 数据结构与算法关系 课件

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A.数据结构是指数据的组织、管理和存储格式 B.数据结构关注的是数据的逻辑结构、存储结构以及基本操作 C.数据结构中的线性存储结构有数组、链表、栈、队列、二叉树等 D.数据结构的存储包括线性存储结构和非线性存储结构 解析 数据结构中的线性存储结构有数组、链表、栈、队列等,而树、二叉 树属于非线性存储结构,因此答案为C。
解析 本题考查语句执行次数。f3没有循环,次数最少;f1中每次加2,f2中
每次加1,因此T1<T2。
索引
例3 随机产生100个0至99之间的随机数,存储在列表a中,采用下列算法进行升 序输出: for i in a: b[i]+=1 t=0 for i in range(100): for j in range(b[i]): t+=1 print(str(i),end=″″)
索引
4.空间复杂度 (1)空间复杂度反映了算法执行所需要占用的__存__储__空__间____。 (2)空间复杂度比较常用的有:O(1)、O(n)、O(n2)。 5.数据结构对算法效率的影响 选择不同的数据结构,算法的运行效率可能也会不同。
索引
2
例题精析
索引
例题精析
例 1 下列有关数据结构的描述中,不.正.确.的是( C )
索引
变式训练 下列有关数据结构与算法关系的描述中,错.误.的是( D )
A.数据结构与算法的关系可表示为:程序=算法+数据结构 B.算法设计必须考虑到数据结构,算法设计不可能独立于数据结构 C.算法的设计同时伴有数据结构的设计,两者都是为最终解决问题服务的 D.数据结构是编程思想,算法则是这些思想的逻辑基础 解析 本题主要考查的是数据结构与算法的关系。算法是编程思想,数据结 构则是这些思想的逻辑基础,答案为D。
而b表示列表a中元素的个数,因此也是100。程序总共执行了2*n次。

索引
变式训练 有如下Python程序代码:
n=int(input(″n=″))
golds+=1
s+=golds*day
return s
return s
def f3(day):
k=int((2*day)**0.5+1e-6) #1e-6表示10的-6次方
if k*(k+1)>2*day:
k-=1
s=k*(k+1)*(2*k+1)∥6+(day-k*(k+1)∥2)*(k+1)
return s
第五章 数据结构与算法
课时目标
1.理解算法与数据结构的关系,能根据数据结构设计合理的算法。 2.能结合实例计算算法的时间复杂度和空间复杂度,并通过实例 操作体会选择不同的数据结构对算法效率的影响。
索引
目录
CONTENTS
01 知识梳理 02 例题精析
03 随堂检测 04 巩固与提升
索引
1
知识梳理
索引
知识梳理
1.数据结构与算法的关系 (1) 算 法 的 设 计 和 选 择 总 是 依 赖 于 ___数__据__结__构___ , 算 法 设 计 的 同 时 也 伴 随 着 ___数__据__结__构___的设计。 (2)算法是编程思想,__数__据__结__构____则是算法思想的基础。 2.算法效率 算 法 效 率 的 高 低 可 由 _算__法__复__杂__度______ 来 衡 量 。 算 法 复 杂 度 分 为 算 法 的 ____时__间__复__杂__度___和_空__间__复__杂__度______。
索引
def f1(day):
def f2(day):
golds,i,s=1,0,0
golds,s=1,0
for j in range(day):
while day>=golds:
s+=golds
s+=golds*golds
i=(i+1)%golds
day-=golds
if i==0:
golds+=1
索引
例2 国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币; 之后两天(第二天和第三天)里,每天收到两枚金币;之后三天(第四、五、六 天)里,每天收到三枚金币;……这种工资发放模式会一直这样延续下去:当 连续N天每天收到N枚金币后,骑士会在之后的连续N+1天里,每天收到N+ 1枚金币(N为任意正整数)。 现在骑士想知道,工作一定的天数后,他能获得的金币数量。小明写了3个 Python自定义函数,完成了骑士的愿望。
索引
这三个函数,从时间复杂度分析,程序效率从高到低依次是( C )
A.f1>f2>f3
B.f2>f3>f1 C.f3>f2>f1 D.三者相同
解析 本题考查时间复杂度。f3没有用到循环,时间复杂度为O(1),f1循环次 数为day。f2循环条件为day>=golds,golds每循环加1,累加的是连续N天, 故f2算法效率大于f1。
索引
3.时间复杂度 (1)时间复杂度反映了算法执行所需要的_时__间___,常用大“O”来表示。 (2)算法中语句的__执__行__次__数____作为时间复杂度度量标准。 (3)语句总的执行次数T(n)是关于问题规模n的函数。所谓问题规模(也称输入的 大小)是指处理问题的大小,即用衡量输入数据量的整数。 (4)算法的___时__间__复__杂__度____反映了程序执行时间随问题规模增长而增长的量级, 在很大程度上能很好地反映出算法的_优__劣___。 (5)常见的时间复杂度从高到低为: O(1)<O(log2n)<O(n)<O(nlog2n)<O(n2)<O(n2log2n)<O(n3)。
索引
该算法的时间复杂度为( A )
A.O(n)
B.O(n2) C.O(2n)
D.O(log2n)
解析 本题考查时间复杂度。时间复杂度关键就是要分析循环结构的运行情
况和次数。该程序有两个循环,第1个循环的循环次数是100次,第2个循环升
序输出a列表中值,内循环的次数由b[i]决定,即循环总的次数是b列表中和,
索引
变式训练 已知 s=2+4+6+8+……+2*n,为求得 s 小于 1500 时,n 的最大 值,小明编写了如下三个自定义函数 f1、f2、f3,其语句总执行次数分别用
T1、T2、T3 表示,则它们之间的关系为( C )
A.T1<T2<T3
B.T3<T2<T1 C.T3<T1<T2 D.T1<T3<T2
相关文档
最新文档