《算法基础》——1.7 练习

本节书摘来自华章计算机《算法基础》一书中的第1章,第1.7节,作者:(美)罗德·斯蒂芬斯(Rod Stephens)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.7 练习

星号表示特别困难的问题。

  1. 1.4.1节中的“规则4”描述了一个时间复杂度为O(N2)的ContainsDuplicates算法,思考下面的改进算法:
    screenshot

这个新版本的时间复杂度是多少?
2.表1-1展示了问题规模N和不同运行时间函数之间的关系。研究这个关系的另一个方法是看一台计算机以一定的速度在给定的时间内能够执行的最大问题规模。
例如,假设一台计算机每秒可以执行一百万个计算步骤。考虑一个时间复杂度为O(N2)的算法。当N=60 000时,这台计算机能够解决一个问题。(因为60 0002=3 600 000 000,这是这台计算机一个小时能执行的步数。)
制作一个表格,展示这台计算机在一秒、一分钟、一小时、一天、一个月、一年中所能执行的表1-1中列出的每一个函数所对应的最大问题规模N。

  1. 有时候,在大O符号中忽略掉的常数是十分重要的。举个例子,假设你有两个能够完成相同任务的算法。前者需要1500×N步,而后者需要30×N2步。当N在哪个范围内时,你会选择前一种算法,当N在哪个范围内时你会选择后者?
    4.*假设你有两个算法—一个需要N3/75-N2/4+N+10步,而另一个需要N/2+8步。当N在哪个范围内时,你会选择前一种算法,当N在哪个范围内时你会选择后者?

5.假设一个程序输入N个字母然后生成这些字母的所有可能无序数对。例如,当输入ABCD时,该程序生成AB、AC、AD、BC、BD和CD的组合。(这里无序的意思是AB和BA看做同一数对)这个算法的运行时间复杂度是多少?
6.假设一个输入规模为N的算法:为一个N×N×N的正方体上的每一个单位正方形赋值。这个算法的运行时间复杂度是多少?
7.假设一个输入规模为N的算法,为一个N×N×N的正方体边框上的每一个单位立方体赋值,如图1-3所示。这个算法的运行时间复杂度是多少?

screenshot


8.假设一个算法,对于输入规模为N,如图1-4所示图形中的每一个小立方体生成一个值。假定明显隐藏起来的立方体是存在的,也就是说这个图形不是中空的,该算法的运行时间复杂度是多少?
9.存在没有数据结构的算法吗?存在没有算法的数据结构吗?
10.考虑下列两个粉刷栅栏的算法:
screenshot
screenshot

对于某个确定的木板数N,这两个算法的运行时间复杂度是多少?哪种算法更优?

  1. 斐波那契数可以按照以下规则递归定义:
    screenshot

斐波那契序列以这些数开始:1、1、2、3、5、8、13、21、34、55、89。
斐波那契函数的运行时间复杂度和图1-2中函数的运行时间复杂度相比如何?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值