举例说明时间复杂度与空间复杂度-创新互联
什么是时间复杂度与空间复杂度?相信很多人对时间复杂度与空间复杂度的了解处于懵懂状态,小编给大家总结了以下内容。如下资料是关于复杂度与空间复杂度的内容。
成都创新互联专注于企业成都全网营销、网站重做改版、克山网站定制设计、自适应品牌网站建设、H5网站设计、成都做商城网站、集团公司官网建设、成都外贸网站建设公司、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为克山等各大城市提供网站开发制作服务。操作次数。ps:这里的函数是指,而不是C语法里的函数。
如下面这个代码:
void
{
{
{
}
}
{
}
{
}
}
所以这段代码的时间复杂度是: F(N) = N^2 + 2N + 10,这个时间计算的就是时间复杂度。
一般关注的是算法运行的最坏情况。
void
{
{
{
}
}
{
}
{
}
}
void
{
{
}
{
}
}
void
{
{
{
}
}
}
递归总次数*每次递归次数。
递归算法的空间复杂度,假如为N*每次递归的空间大小为1,则空间复杂度为O(N)。
以斐波那契数列为例:
空间复杂度是:O(N),既是深度。
是:O(2^N).
这段代码有下面几个明显缺陷:
所以我们需要对这段代码进行优化。请看下面:
:可以倒着计算,定义三个变量,如下所示:
long long Fib(size_t N )
{
long long * Fibarray = new long long[ N + 1];
Fibarray[0] = 0;
Fibarray[1] = 1;
for ( int i = 2; i <= N; ++i)
{
Fibarray[i] = Fibarray[i - 1] + Fibarray[i - 2];
}
long long ret = Fibarray[ N];
delete[] Fibarray;
return ret;
}
时间复杂度为:O(N)。
空间复杂度为:O(N)。
方法二:用一个循环开辟一个数组。
long long Fib(size_t N )
{
long long Fib[3] = { 0, 1, N };
for ( int i = 2; i <= N; ++i)
{
Fib[2] = Fib[1] + Fib[0];
Fib[0] = Fib[1];
Fib[1] = Fib[2];
}
return Fib[2];
}
时间复杂度是:O(N)。
空间复杂度是:O(1),因为常数个对象。
看完上诉内容,你们对时间复杂度与空间复杂度大概了解了吗?如果想了解更多相关文章内容,欢迎关注创新互联行业资讯频道,感谢各位的阅读!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
名称栏目:举例说明时间复杂度与空间复杂度-创新互联
标题URL:http://hbruida.cn/article/dosdhi.html