大O表示法及旅行者问题

算法的运行时间

运行时间增速
    不同算法随规模的增大而增大的速度不同
我们需要比较不同算法的运行时间的增速

大O表示法【类比数据结构中的时间复杂度】

比较操作数【其体现了算法运行时间的增速】
这种表示法体现了算法在最糟情况下的运行时间
    【这不就是时间复杂度吗】

在不同算法比较时可以看出量级的差异,以选择不同的算法,但是针对一个算法求出增速或许可以根据其增速特性,添加不同的操作

常见的算法增速

 O(log n),也叫对数时间,这样的算法包括二分查找。
 O(n),也叫线性时间,这样的算法包括简单查找。
 O(n * log n),一种速度较快的排序算法。
 O(n2),一种速度较慢的排序算法。
 O(n!),一种非常慢的算法

旅行者问题

一个旅行者要前往5个城市
5个城市并不在一条直线上
旅行者要规划一下路线,保证总路程最短
那么总共有5*4*3*2*1种方案
    他需要将所有方案列出来,并且计算出每种方案所需的路程
        那么需要计算120次
如果他要去往6个城市,就需要计算6*5*4*3*2*1次
如果他要去往n个城市,就需要计算n!次
如果他有100年的时间大约3153600000秒,每一秒可以计算出一种方案的结果,那么他只能计算出去12个城市的所有方案(479001600),而如果是13个城市(6227020800)的话,那他就别想算出来了
这种问题的时间复杂度就是O(n!)

So,有没有更好的算法?

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值