时间复杂度和空间复杂度
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个待处理的数据,数据的初始顺序不同,则基本操作的次数也不同。因此,我们一般按最坏的情况作为时间复杂度的一个度量。
空间复杂度
算法的空间复杂度指 算法所需要的存储空间。
通常情况下,我们用算法的时间复杂度来指运行时间的需求
算法的空间复杂度来指空间存储的需求。一般求算法的复杂度,就是指算法的时间复杂度。
相关文章推荐
- 在O(n)时间复杂度O(1)空间复杂度求一个数组中出现多次和未出现的数字
- 时间复杂度和空间复杂度
- 时间复杂度和空间复杂度详解
- 如何从存有1亿个电话号码的号码(8位电话号码)本中,检索出重复的电话号码,时间复杂度为O(n),空间复杂度为O(1)
- 03_时间复杂度和空间复杂度
- 时间复杂度和空间复杂度详解
- 【百度】写一个字符串逆序的程序,时间复杂度和空间复杂度最低,效率越高越好
- 简述时间复杂度和空间复杂度
- 每天一道LeetCode-----找到序列中第一个没有出现的正整数,要求时间复杂度是O(n),空间复杂度是O(1)
- 时间复杂度和空间复杂度详解
- 算法复杂度——时间复杂度和空间复杂度
- 时间复杂度和空间复杂度
- [LeetCode] Candy (分糖果),时间复杂度O(n),空间复杂度为O(1),且只需遍历一次的实现
- 时间复杂度和空间复杂度详解
- 掌握算法的渐近时间复杂度和空间复杂度的意义与作用
- 时间复杂度和空间复杂度详解
- 时间复杂度和空间复杂度详解 http://blog.csdn.net/booirror/article/details/7707551
- 时间复杂度和空间复杂度详解
- 时间复杂度和空间复杂度(1)
- 时间复杂度和空间复杂度(二)