数据结构一之复杂度

数据结构一之复杂度

前言

数据结构是程序员常常要用到的东西,熟悉各种数据结构的相关知识是作为一名优秀程序员的前提,作为一名小白,我将自己所学的数据结构的知识总结为系列文章,以供自己复习与学习,若有不正之处,忘斧正!!

一、什么是程序的复杂度

通俗的说,程序的复杂度就是运行程序所消耗的资源,一是机器的时间资源,另一是机器的空间资源。专业的说,时间复杂度是代码总的运行次数,空间复杂度是除去提供的原始空间,解决问题所需要消耗的空间资源。时间复杂度和空间复杂度是评判一个算法优劣的主要参数。

二、时间复杂度

1.常见的时间复杂度

常见的时间复杂度量级有:常数阶O(1)、对数阶O(logN)、线性阶O(n)、线性对数阶O(nlogN)、平方阶O(n²)、立方阶O(n³)、次方阶O(n^k)、
指数阶(2^n)

2.时间复杂度计算的经验性结论

简单的顺序与选择结构,时间复杂度为O(1);
一般情况下,一层循环,时间复杂度为O(n);
一般情况下,两层循环嵌套,时间复杂度为O(n^2);
一般情况下,可以选择用递归、分治、动态规划等换取时间效率;
采用二分的分治法,时间复杂度一般与log2n有关;
两个循环并列的情况,时间复杂度为max(O(m),O(n))。

计算时间复杂度需要注意的一些点:
1.多项式级运算,保留最大项即可
2.常数对于时间复杂度的计算没有意思,可以直接去掉常数项系数
3.时间复杂度不是用来计算程序具体耗时的,是一个抽象的量


三、空间复杂度

我对于空间复杂度的理解,就是要为解决问题创建分配空间的大小,但由时间复杂度不是用来计算程序具体耗时这个情况来看,空间复杂度也不是用来计算程序具体需要的空间消耗的,也是一个抽象的量。
空间复杂度比较常用的有:O(1)、O(n)、O(n²)。


总结

时间复杂度和空间复杂度都是抽象出来比较程序之间优劣的量化标准。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值