大O表示法,指示算法运行速度的方法&常见的运行时间

本文中logn指的是log以2为底n的对数,本文中所有的log都是以2为底。

大O表示法

大O表示法,指出了最糟糕的情况下的运行时间;
算法的运行时间包括:最糟情况下的运行时间和平均情况下的运行时间。
假设列表有n个元素,遍历查找某个元素的位置,最多需要查询n次。使用大O表示法,这个运行时间为O(n)
使用二分查找法,最多只需要查询logn次,表示为O(log n)

常见大O运行时间

  • O(log n) 对数时间:二分查找法等
  • O(n) 线性时间:遍历查找
  • O(n*log n) 快速排序等
  • O(n^2) 选择排序等
  • O(n!) 0.0

运行时间为O(n!)——著名的旅行商问题

有一位旅行商,需要前往5个城市,同时要确保旅程最短。。
如果你还记得排列组合的话,那真的是太棒了,如果你已经忘了,希望这可以帮你回忆起来:
5个城市总共有54321=120种方式。(排列)
当涉及6个城市的时候需要65…*.1= 720种,7个城市时有5040种;
当涉及n个城市时,需要执行n!(n的阶乘)次操作才能计算出结果。因此运行时间为O(n!),即阶乘时间。除非涉及的城市数很少,否则需要执行非常多的操作。如果涉及的城市数超过100,根本就不可能在合理的时间内计算出结果。
这种算法很糟糕。但是我们别无选择,这是计算机科学领域亟待解决的问题之一。面对这个问题,我们能做的只是去找出近似的答案,更详细的解释可以参考之后的文章。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值