您的位置:首页 > 其它

时间复杂度和空间复杂度

2018-12-01 14:47 81 查看

时间复杂度和空间复杂度

时间复杂度
首先我们先来说说算法的时间复杂度
定义:将算法中基本操作的执行次数作为算法时间复杂度的一个度量。
所以,计算一个问题的时间复杂度,我们需要执行两个步骤:
(1)、确定问题的基本的操作和问题规模
问题的基本操作一般就是最深层内循环的语句所描述的操作
问题的规模就是循环所执行的次数n。
(2)、确定问题规模n的函数
当n确定以后,循环所执行的次数与n有关,所以一般情况下假设循环执行m次,得到一个i、m和n 的一个等式,解出m的表达式,即为时间复杂度的一个函数。
在此处举一例子,大家自行计算其时间复杂度:

void fun(int n)
{
int i,j,x=0;
for (i=0;i<n;++i)
for (j=i+1;j<n;++j)
++x;
}

答案为:O(n^2)
注意:有的算法中基本操作的执行次数不仅跟输入的数据规模有关还跟数据本身有关。例如:一些排序算法中,同样有n个待处理的数据,数据的初始顺序不同,则基本操作的次数也不同。因此,我们一般按最坏的情况作为时间复杂度的一个度量。

空间复杂度
算法的空间复杂度指 算法所需要的存储空间。
通常情况下,我们用算法的时间复杂度来指运行时间的需求
算法的空间复杂度来指空间存储的需求。一般求算法的复杂度,就是指算法的时间复杂度。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: