算法的概念和特征,时间复杂度,最优,计算原则

算法 是独立存在的一种解决问题的方法和思想。
在这里插入图片描述
算法的五大特征
(1) 输入性:有零个或多个外部量作为算法的输入
(2) 输出性: 算法至少有一个量作为输出
(3) 确定性:算法中每条指令清晰,无歧义
(4) 有穷性:算法中每条指令的执行次数有限,执行每条指令时间也有限
(5) 可行性:算法原则上能够精确的运行,而且人们用纸和笔做有限次运算后即可
完成

一个经典的例子:

import time
start_time=time.time()
for a in range(1001):
    for b in range(1001):
        for c in range(1001):
            if a+b+c==1000 and a**2+b**2==c**2:
                print('a,b,c:',a,b,c)
end_time=time.time()
print('所用时间:',(end_time-start_time))

这个执行,我的电脑要花103秒才能完成。如果优化一下算法,0.7秒,如下:

import time
start_time=time.time()
for a in range(1001):
    for b in range(1001):
        c=1000-a-b
        if a**2+b**2==c**2:
            print('a,b,c:',a,b,c)
end_time=time.time()
print('所用时间:',(end_time-start_time))

这两个时间,话费截然不同。但是,只看时间长短,就能认定算法的优劣吗? 算法在不同计算机上运行,时间是不同的。这就是要依赖执行的环境。所以,这里引入两个概念:时间复杂度 和 空间复杂度
在这里插入图片描述语句执行次数多,话费时间多! 所以看次数
时间复杂度就是 算法执行的次数来衡量算法的优劣
在这里插入图片描述最坏时间复杂度
如下 要升序排序,而这个情况,就是最坏。。。
在这里插入图片描述
反之,这个是最优。。。
在这里插入图片描述平均时间复杂度
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值