01时间复杂度&空间复杂度

01时间复杂度&空间复杂度

笔记背景:

这是我学习数据结构与算法的笔记,也是专栏的第一篇。笔记案例从up主处拷贝并整理,使用python语言。LeetCode刷题语言为JavaScript。
教程来自于up主:爱学习的饲养员——手把手带你刷Leetcode力扣

一、时间复杂度

1.什么是时间复杂度

可以理解为: 算法的执行效率(算法的执行时间与算法的输入值之间的关系)

用大O符号表述

技巧:看循环

2.常见的时间复杂度

无循环
O(1)

执行常数次,和输入num无关

def O1(num):
	i = num
	j = num*2
	return i+j
单层循环
O(n)

执行了num次

def ON(num):
	total = 0
	for i in range(num):
		total+=i
	return total
O(logN)

为方便理解,假设num = 5,则输出结果为4,循环了2次;假设num = 10,则输出结果为8,循环了3次。

i = 1,return 2

i = 2,return 4

i = 3,return 8

发现规律,循环了log2的N次。log的底数2来自于i*2,N与num有关,但具体的规律要看具体的代码,于是时间复杂度可以笼统的表示为O(logN)

def OlogN(num);
	 i = 1
	 while(i < num):
	 	i = i*2
	return i
多层循环
O(M+N) 双层循环并列
def OMN(num):
	total = 0
	for i in range(num):
		total += 1
	for j in range(num):
		total += j
	return total
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
O(N^2) 双层循环嵌套
def ON2(num):
	total = 0
	for i in range(num):
		for j in range(num):
			total += i + j
	return total

3.时间复杂度的耗时比较

O(1) < O(logN) (二分查找) < O(N) < O(NlogN)(排序) < O(N^2) < O(2^n) < O(n!)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P2N6dfEZ-1644330593407)(D:\Code_project\Web_Front_End_Project\数据结构与算法&LeetCode力扣刷题初探\时间复杂度.png)]

二、空间复杂度

1.什么是空间复杂度

可以理解为: 算法的存储空间与算法的输入值之间的关系

技巧:看常量,看其与输入值的关系

2.常见的空间复杂度

O(1)

total为int类型变量,无论num数组多大,total只占据一份空间,所以空间复杂度为O(1)

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

array为一个数组,其大小随着nums变化而变化,所以空间复杂度为O(N)

def ON(nums):
    array = []
    for num in nums:
        array.append(num)
    return array
递归O(N)

递归要考虑递归栈

def ON(num):	if(num<=0):		return 0	return ON(num-1) + ON(num-2)

3.空间复杂度的耗时比较

O(1) < O(N) < O(N^2)

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值