时间复杂度和空间复杂度

一、时间复杂度

1.1什么是时间复杂度
  • 简单的来说就是执行一个程序代码所需要的时间(执行一个语句定义位一个单元)
    时间复杂度体现 了一个算法的好坏 是至关重要的
    列如下面这个代码
	int n=1000;//执行1次
	for(int i=1;i<=n;i++) //int i=1执行一次 i<=1000执行1001次  i++执行了1000次
		a+=1;//执行1000
		//总的执行次数就是3003次  这个就是这个代码的时间复杂度

可以看出当n很大的是时候 后面的常数次数对于总次数来说是影响不大的,所以在初略计算时间的=复杂度的时候我们一般把常数忽略不计,只保留最高阶项如果最高阶项有系数那么我们也罢系数去掉

1.2 时间复杂度推导原则
  1. 如果运行时间是常数量级,用常数1表示;
  2. 只保留时间函数中的最高阶项;
  3. 如果最高阶项存在,则省去最高阶项前面的系数。
1.3 常见的时间复杂度的大小关系

-O(1) < O(logn) < O(n) < O(nlogn) < O(n2) < O(n3) < O(2n)

二、空间复杂度

2.1什么是空间复杂度
  • 简单来说就是储存一个程序代码所需要的空间
举例说明一下

常量空间
类似于时间复杂度O(1)我们记一个执行语句的代码空间大小固定 和输入出输出没有直接的关系 空间复杂度记为O(1)

int m=2;

线性的空间
当算法执行一个线性的集合(列如数组) 集合大小和输入是成正比的,记空间复杂度为O(n) 二维数组的时候空间复杂度记为O(m*n)

1|int a[n];
2|int arr[m][n]

三、总结

  1. 为什么要有空间和时间复杂度?
  • 判断一个算法的好坏用时间和空间复杂度来判断 主要关注时间复杂度 要会计算时间复杂度
  1. 有什么用?
  • 在些算法题中可以用数据给定的范围计算时间复杂度反推使用的算法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值