空间复杂度和空间复杂度

本文详细解析了时间复杂度与空间复杂度的概念,通过案例介绍了o(1), o(logN), o(N), o(NlogN), o(n²)等常见复杂度,并对比了不同场景下算法效率。同时讲解了空间复杂度的计算方法和常见案例。
摘要由CSDN通过智能技术生成

一、什么是时间复杂度

算法的执行效率
算法的执行时间与算法的输入值之间的关系
例:

def test(num):
	total = 0
	for i in range(num):
		total += i
	return total

假设该示例中“total = 0”的执行时间为a,“total += i”的执行时间为b,“return total”执行时间为c,num=N,故总执行时间为a+Nb+c。
其中对总执行时间影响最大的是Nb。
(时间复杂度不关心系数和小的执行时间。)
** 时间复杂度的大o表示法:o(N)。**
常量:o(1)
一般算时间复杂度要看代码中是否有for/while循环。

二、常见的时间复杂度案例分析:

o(1) o(log n) o(n) o(nlogn) o(n²)

  1. o(1):表示算法执行时间与num无关。
def O1(num):
	i = num
	j = num*2
	return i+j
  1. o(log n):
def OlogN(num):
	i = 1
	while(i<num):
		i = i*2
	return i

num = 2ⁿ
3. o(n):

def test(num):
	total = 0
	for i in range(num):
		total += i
	return total
  1. o(nlogn):
def ONLogN(num1,num2):
	total = 0
	j = 0
	for i in range(num1):
		while(j<num2):
			total += i+ j
			j = j*2
	return total

a+b+N(logN+c)+d

  1. o(n²):
def ON2(num):
	total = 0
	for i in range(num):
		for j in range(num):
			total += i+j
	return total

o(1)<o(logN)<o(N)<o(NlogN)<o(n²)<o(2ⁿ)<o(n!)
二分查找法 排序
做算法题时尽量减少空间复杂度

三、什么是空间复杂度

算法的存储空间与输入值之间的关系

def test(num):
	total = 0
	for i in range(num):
		total += i
	return total

变量是常量时是o(1)
所占用的空间大小是一定值,不随输入值改变而改变。

def test(num):
	array = []
	for num in nums:
		array.append(num)
	return array

o(N)

四、常用空间复杂度:

o(1) o(n) o(n²) o(log n) o(nlogn)
变量是数组或多个数集合在一起的情况可能为o(n)或 o(n²)
是否递归:是递归则为 o(N)
o(1)< o(n)< o(n²)

很多情况下,时间和空间只能二选一

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值