【简单总结】复杂度分析

常见四种场景

  1. 执行次数为线性的, T(n)
def eatBread(n):
	for i in n:
		print("eat bread",i)
  1. 执行次数为对数,T(n)=logn
    每一次都是减去一半
def eatBread(n):
	i = 1
	while i<=n:
		i = i * 2
		print("eat bread")
  1. 执行次数为常数,T(n)=1.
    def eatBread(n):
    print(“eat bread”)

  2. 执行次数为多项式,T(n)=0.5*n^2+0.5n
    一条长10寸的面包,吃掉第一个一寸需要1天时间,吃掉第二个一寸需要2天时间…吃完要多少天
    1加到10,[(n+1)*n]/2

def eat(n):
	while i<n:
		while j<i:
			print("等待一天")
			j+=1
		print("eat bread")
		i+=1

概念:若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

最好最坏时间复杂度

一段循环中,如果里面带有判断条件,有可能第一个条件就跳出循环,那么O(1),有可能最后才跳出循环,那么O(N);第一种情况就是最好情况时间复杂度,第二种是最坏情况时间复杂度

平均复杂度和摊还分析复杂度先不理~

常见问题

  1. 空间复杂度的描述?

空间复杂度是指除了原本的数据存储空间外,算法运行还需要额外的存储空间。例如栈需要存储大小为n的数组,这些是无法省掉的,在入栈和出栈过程中,只需要一两个临时变量存储空间,所以空间复杂度是 O(1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值