永发信息网

什么时间复杂度

答案:1  悬赏:60  手机版
解决时间 2021-01-04 01:29
  • 提问者网友:活着好累
  • 2021-01-03 00:31
什么时间复杂度
最佳答案
  • 五星知识达人网友:归鹤鸣
  • 2021-01-03 01:24
问题一:什么是时间复杂度、空间复杂度? 空间复杂度:
是程序运行所以需要的额外消耗存储空间,一般的递归算法就要有o(n)的空间复杂度了,简单说就是递归集算时通常是反复调用同一个方法,递归n次,就需要n个空间。
时间复杂度:一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。
一般情况下,算法中基本操作重复执行的次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n),使得当n趋近于无穷大时,T(n)/f (n)的极限值为不等于零的常数,则称f(n)是T(n)的同数量级函数。记作T(n)=O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。
在各种不同算法中,若算法中语句执行次数为一个常数,则时间复杂度为O(1),另外,在时间频度不相同时,时间复杂度有可能相同,如T(n)=n2+3n+4与T(n)=4n2+2n+1它们的频度不同,但时间复杂度相同,都为O(n2)。
按数量级递增排列,常见的时间复杂度有:
常数阶O(1),对数阶O(log2n),线性阶O(n),
线性对数阶O(nlog2n),平方阶O(n2),立方阶O(n3),...,
k次方阶O(nk),指数阶O(2n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。问题二:什么是算法的时间复杂度? 时间复杂度表面的意思就是代码花费的时间,但是一般使用这个概念的时候,更注重的是随着数据量增长,代码执行时间的增长情况。一般认为一个基本的运算为一次运行算,例如加减乘除判断等等
例1和例2时间复杂度都可以简单认为是o(N),一般用时间复杂度的时候要取一个下限即可,不用那么精确,可能你认为例1是o(2N)而例2是o(n),但实际上这两者对于时间复杂度的作用来说罚区别,前面已经说了,时间复杂度关注的是数据量的增长导致的时间增长情况,o(2N)和o(n)在数据量增加一倍的时候,时间开销都是增加一倍(线性增长)。
又例如两重循环的时间复杂度是o(N的平方),N扩大一倍,时间复杂度就扩大4倍。所以时间复杂度主要是研究增长的问题,一般效率较好的算法要控制在o(N)或者o(log2N)问题三:什么是线性时间复杂度 O(n)级别的就是线性的问题四:C++中时间复杂度是什么意思 时间复杂度,就是算法占用的时间,一般用某些基本操作的频度表示。
表示为 T(N)=O(f(N))
N 表示数据规模,对于排序算法,
N
指的是参与排序的数据个数。
对于排序算法
基本操作 指的是比较和赋值操作
T(N)=O(f(N)) 表示 T(N) 问题五:时间复杂度与空间复杂度有什么关系 没什么关系,空进复杂度是你用了多少内存,时间复杂度是你用了多少时间问题六:时间复杂度 T(n)=O(f(n)),的 O什么意思 O(n)这个大O表示的是最坏情况下的时间复杂度,就比如你举的例子,一共n^3次乘法和n^3次加法,那么加起来就是2×n^3。然后如果有一个表达式f(n),使得n趋于无穷大的时候,lim(2×n^3)/f(n)=常数c,那么就可以用大O表示。表示为O(f(n)),而且规定f(n)的表达式是不带常数的系数的,那么在这里f(n)=n^3。一般用大O表示算法复杂度只需要取次数最高的项,而且去掉系数就OK了,不用每次都这么算的。三重循环而且每重循环都执行n次的话直接O(n^3)就好了。问题七:如何计算时间复杂度 计算方法
1. 一般情况下,算法的基本操作重复执行的次数是模块n的某一个函数f(n),因此,算法的时间复杂度记做:T(n)=O(f(n))
分析:随着模块n的增大,算法执行的时间的增长率和 f(n) 的增长率成正比,所以 f(n) 越小,算法的时间复杂度越低,算法的效率越高。
2. 在计算时间复杂度的时候,先找出算法的基本操作,然后根据相应的各语句确定它的执行次数,再找出 T(n) 的同数量级(它的同数量级有以下:1,log(2)n,n,n log(2)n ,n的平方,n的三次方,2的n次方,n!),找出后,f(n) = 该数量级,若 T(n)/f(n) 求极限可得到一常数c,则时间复杂度T(n) = O(f(n))
例:算法:
1
2
3
4
5
6
7
8
9for(i=1;i 问题八:C++中的时间复杂度O(1)与O(n)有什么区别 你理解错了,我举个例子:
你设计了一个字符串类:客户有时需要知道字符串的长度,
所以有两种设计GetLength()函数的方法
1。每次客户询问长度,你都用循环检测串长,即
for(i=0;str[i]!=0;++i)
这样效率低 时间复杂度O(n)
2 每次串内容改变时才算长度,算好后存起来,以后
客户需要知道字符串的长度就直接把变量值返回
这样效率高 时间复杂度O(1)问题九:算法时间复杂度与运行时间的关系 我来举个例子说明
比如一种排序算法的时间复杂度是 O(N),那么运行时间就是正比于要素个数N,
另一种排序算法的时间复杂度是O(N*LogN),那么运行时间就正比于N*LogN
所以N足够大的情况下,总是第一种算法快.
但是,如果N不是很大,那么具体的运算时间并不一定都是前一种算法快,
比如刚才的第一种算法的实际速度是 100×N, 第二种算法的实际速度是 2× N × LogN,
N=100,就会是第二种算法快问题十:一个算法的时间复杂度是什么函数? 关于n的函数,n是问题的规模
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯