时间复杂度刘汝佳2008石家庄.pptVIP

  • 21
  • 0
  • 约2.08千字
  • 约 16页
  • 2017-09-27 发布于广西
  • 举报
时间复杂度刘汝佳2008石家庄.ppt

ADT与时间复杂度 (NOI培训) 刘汝佳 储钱罐 有一只自动储钱罐,它有一个孔和一个按钮。存钱的时候,你可以从小孔往里面投一枚硬币;取钱的时候,只要按一下按钮,面值最大的硬币就会从孔里掉出来。 我们不知道储钱罐里面有什么,不过这也没什么大不了的,因为我们知道它的使用方法。存钱和取钱并不需要了解储钱罐的机理 抽象数据类型(ADT) 小机器人 这个储钱罐的性能如何呢?也就是说:扔完一枚硬币以后需要多久才能扔第二枚硬币、按按钮多久后面值最大的硬币才会掉出来? 自动储钱罐的设计者告诉你:钱罐里有一个很小的机器人,每次按下按钮的时候,它会从钱罐里找出最值钱的一枚,从孔里扔出来。那么小机器人的工作方式将直接影响到储钱罐的性能。 ADT相同的数据结构,性能可能有差异 临时抱佛脚 小机器人是这样工作的:当你扔一枚硬币进来的时候,它什么都不做,自己睡大觉; 当你按按钮的时候,它慌了,赶紧找钱。它先随便挑出一个硬币拿在手里,然后把其他所有硬币的看一遍,如果发现更值钱的,就用把手里的硬币换掉,最后手里拿着的就是最值钱的硬币,然后从孔里扔出去。 分析 可以预料,这个钱罐“添加硬币”很快(小机器人啥都不做),找最大面值却很慢。 如果小机器人检查一枚硬币的时间是0.01秒,那么有100个硬币时需要1秒,有10,000个硬币时需要100秒(约两分钟),而1,000,000个硬币时就需要10,000秒(约2.8

文档评论(0)

1亿VIP精品文档

相关文档