时间复杂度--算法的时间效率衡量标准

导语:时间复杂度的基本概念

        很多同学在程序开发和算法调优的过程中,经常会接触到时间复杂度的概念,那究竟什么是时间复杂度呢?
        在回答这个问题之前,我们先举一个例子,我们把编写一个程序的过程类比成指挥一场战役,程序开发人员就扮演着指挥者的角色,编写的代码就是被指挥的战士,那么算法就是指挥战役的"兵法"。
       在实际开发过程中,为了满足业务需求,实现业务目的的各种方法和思路就是算法,而时间复杂度是衡量算法在处理输入数据时所需的时间量级的参数。它是用来描述算法执行时间效率的指标,是衡量"兵法"好坏的重要指标。
        如果我们的业务目的是获取5个4的和,那么有两种实现思路:
                算法1:  4+4+4+4+4=20
                算法2:  4*5=20
        同样的数据,同样的目的,不同yi的算法,不同的方法和思路,效率就会不同,而在实际开发过程中,实现目的时所需时间越短的算法相对而言越有优势,而时间的度量标准就是时间复杂度。


一.算法的时间效率衡量


        在解释时间复杂度如何计算之前,我们来看一下算法的时间效率衡量标准,现有需求:
        如果 a+b+c=1000,且 a^2+b^2=c^2(a,b,c 为自然数),如何求出所有a、b、c可能的组合?
        解题算法一:穷举法
                将问题的所有可能的答案一一列举,然后根据条件判断此答案是否合适,合适就保留,不合适就丢弃 

#列举a,b,c的所有可能的数值
for a in range(0,1001):                   
    for b in range(0,1001):                
        for c in range(0,1001):            
#判断是否满足条件
            if a**2+b**2+c**2 and a+b+c==1000:
                print('a,b,c:%d,%d,%d' % (a,b,c))

解题算法二:
                知道a,b,c他们三者是有一个关系的,就可以不用对c进行遍历,直接把c列成一个条件即可:

#注意这里是两层循环
for a in range(0,1001):
    for b in range(0,1001):
        c=1000-a-b
   
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值