时间复杂度学习记录

看了很多相关的文档,但大多都好官方,对于没有好好学习线性代数等之类专业学科的娃来说有点费脑子啊,话说之前被时间复杂度虐过,现在来简单整理一下学习笔记:

首先谈到时间复杂度,是和算法挂钩,算法听着高深,实则一些计算赋值或for等,算法复杂度分时间复杂度与空间复杂度,空间复杂度是指占用内存,时间复杂度即时间频度,是指执行该语句的次数,下面对时间复杂度具体值进行解释。

O(1):指运算次数为常数的算法,比如a=b+1;像这条语句,执行1次,再来n个这样的赋值语句,也是执行n次,注意这个n是个常数,有种小学的斜率公式,k=1;

O(n):是指线性算法。比如for(i=1;i<=n;i++)这样的for循环语句需要执行n次,这个n越大,执行的次数也越大,即成正比,宛如斜率公式k=n;

O(1)和O(n)的区别呢:当n很大的时候,O(1)的复杂度趋于常量C不再增长,而O(n)则仍然成正比增长。

此处放一个思考:

那是不是可以说当n比较小比如100的时候,O(1)与O(n)相等?

O(logn):对数阶,比如二分法,想想数据库的b-tree索引检索,每次能去掉一半的检索数据量。

O(n2):是指n的平方哈,按我理解,循环套循环n*n次运行,看别处说,平常可见的对数组进行简单的排序都是O(n2),这个我后续会多加关注。(写程序常用脑不用心的原因啊~)。

之后的不说了,有一个复杂排序:常数阶O(1)、对数阶O(logn)、线性阶O(n)、线性对数阶O(nlogn)、平方阶O(n²)、立方阶O(n³)、……k次方阶O(n的k次方)、指数阶O(2的n次方)。立方阶据说是矩阵相乘算法,这个没写过,太菜了。

为啥算法现在这么火,精心设计的算法,高效,运行快,算法设计是一门技术啊,之后也会多关注,提高程序效率。

暂时到这里,希望后续会补充更多,若有误,请大神指出,小妹不胜感激。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值